Как да копирате данни от един лист Excel в друг с помощта на формула

Много потребители на Excel се борят, когато се опитват да разберат как да преместват данни от лист за въвеждане в архивиран лист. Въпреки че Excel е електронна таблица, предназначена за извършване на сложни изчисления, като например таблици за ипотечни амортизации или проследяване на продажбите, повечето хора никога не проучват по-задълбочените си операции.

Този често задаван въпрос ще ви запознае с това как да се квалифицирате и преместите данните си.

Копиране на данни от един лист Excel в друг с формула

Започнете с отварянето на раздела за програмисти в Excel.

След това трябва да изградите UserForm на Sheet Controller. Тази потребителска форма ви позволява да изберете откъде се преместват данните, къде се преместват данните, в коя колона да се проверят дали отговарящите данни да се определят дали се движат, и каква стойност трябва да бъде за въвеждането на колоната, за да я преместите.

Когато създавате потребителската си форма, отразявайте следния пример, като внимавате да посочите правилно всеки от тях:

Сега, след като сте конструирали потребителската форма, трябва да прикачите код към всеки контрол. В потребителската форма щракнете двукратно върху контролата, наречена CommandButton2 . Диаграмата на Userform не би трябвало да се вижда повече и сега трябва да бъдете представени с изследователя на кодовете, с кодовия блок по подразбиране. Този конкретен кодов блок започва с Private Sub ComandButton2_Click () . Поставете курсора под първия ред, но преди реда, който казва Край под . Сега въведете следния код, за да настроите публичните променливи, които да се прилагат към останалата част от кода:

Сега се върнете обратно към UserForm Explorer и щракнете двукратно върху контрола, маркирана с CommandButton3 . За пореден път потребителската форма се оставя настрана за изследователя на кодове. Поставете курсора върху новосъздадения блоков код и въведете следния код:

В раздела Explorer в Project Explorer щракнете с десния бутон върху Microsoft Excel обекти . Изберете Вмъкни > Модул .

Кликнете два пъти върху модула, наречен Module1, и въведете следните обществени променливи:

Сега продължете и поставете още три листа в работната си книга. Вече трябва да имате четири листа, наречени Sheet1, Sheet2, Sheet3 и Sheet4 .

На Sheet1 поставете елементи в около 10-15 реда, като използвате изображението по-долу като пример за тестовите данни:

След това в раздела Разработчик (в горната част на работната книга) кликнете върху Контроли > Вмъкване > иконата на бутона :

Сега поставете бутона навсякъде в листа си. Когато пита за макроси, изберете Ново .

Ще забележите, че той постави новия макрос в Модул2 на проекта. Маркирайте кодовия блок в Module2, изрежете го от Module2 . Сега щракнете двукратно върху Модул1 . Когато се отвори Code Explorer, щракнете с десния бутон и изберете Paste . Сега трябва да имате празен кодов блок, който гласи:

Поставете курсора вътре в блоковия код и добавете следния код:

Ще забележите, че има функция, наречена Buildform . Това създава потребителската форма за съответния брой листове, след като направи инвентаризация на тях. За да приложите това, поставете следния код в Code Explorer, под подпрограмата Button1_Click () :

В рамките на функцията buildform има друга функция, наречена Counttabs . Трябва да поставите този код над кода на Buildform, но под подпрограмата Button1_click :

Ако са зададени и променливите TabFrom и TabTo, ще трябва да изпълните функцията createNew () . Поставете долния код в Code Explorer, над подпрограмите Button1_click :

Ако сте избрали да създадете нов лист, променете променливата TabTo на новото име на листа. След това ще трябва да изпълните рутината LoopForMove (TabFrom, TabTo) . В Code Explorer въведете следния код:

За да намерите последния ред на листа, въведете кода по-долу в Code Explorer, над LoopForMove (FromWhatSheet, ToWhatSheet) :

Сега ще можете да преместите действителния код, използвайки функцията Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Между функциите LooForMove () и createNew () поставете следния код:

| Фантазия]

Продължете да прелиствате всеки ред от листа От, търсейки квалифицирани записи, като използвате функция За Loop .

За да обобщим действията на потребителска форма, вижте следната илюстрация:

Ето и същата илюстрация с, този път, с повече елементи, взети под внимание:

И накрая, тук е посоченият по-горе код в неговата цялост:

 Опция Изрично

Обществен TabFrom

Обществен TabTo

Обществен Qualif As String

Публично WhatCol

Обществен WhatLogic

Public CutVal

Обществен FormXcel

Функция FindLastRow (OnWhatsheet)

FindLastRow = Клетки (ThisWorkbook.Worksheets (OnWhatsheet) .Rows.Count, 1) .End (xlUp).

Крайна функция

Функция LoopForMove (FromWhatSheet, ToWhatSheet)

Dim LastRow, Cnt

Dim CellValue As String

Dim CellLoc

Дим nret

Ако WhatCol = "" Тогава

WhatCol = "А"

Край Ако

Ако Qualif = "" Тогава

Qualif = "X"

Край Ако

ThisWorkbook.Worksheets (FromWhatSheet) .Изберете

LastRow = FindLastRow (FromWhatSheet)

За Cnt = LastRow до 1 Стъпка -1

CellLoc = WhatCol & Cnt

CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc).

Ако CellValue = Qualif Тогава

nret = Moveit (ОтЧастна таблица, CellLoc, ToWhatSheet, CutVal)

Край Ако

Следващия

Крайна функция

Функция Moveit (ОтЧаст, Отчети, Към, CutVal)

Dim MoveSheetLastRow

С ThisWorkbook.Worksheets (FromSheet)

.Изберете

.Range (WhatRange) .EntireRow.Select

Край с

Selection.Copy

Ако CutVal = True Тогава

Selection.Cut

Край Ако

MoveSheetLastRow = FindLastRow (ToWhere)

ThisWorkbook.Worksheets (ToWhere) .Изберете

ThisWorkbook.Worksheets (ToWhere) .Калки (MoveSheetLastRow + 1, 1) .EntireRow.Select

Selection.Insert

ThisWorkbook.Worksheets (FromSheet) .Изберете

Application.CutCopyMode = Невярно

Крайна функция

Функция createNew ()

Dim NewSheet

Ако TabTo = "Нов лист" След това

ThisWorkbook.Sheets.Add After: = Листове (Sheets.Count)

NewSheet = ThisWorkbook.ActiveSheet.Name

TabTo = NewSheet

Край Ако

Крайна функция

Sub Button1_Click ()

Дим nret

buildform

Ако FormXcel = False then

Ако TabFrom "" И TabTo "" Тогава

Създай нов

nret = LoopForMove (TabFrom, TabTo)

още

MsgBox ("Моля, задайте лист" От "и" Към "!)

Край Ако

Край Ако

Край Под

Функции Counttabs ()

Counttabs = ThisWorkbook.Worksheets.Count

Крайна функция

Функция buildform ()

Разметка на Dim

Controller.ComboBox2.AddItem "Нов лист"

За TabCount = 1 за Counttabs

Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (TabCount).

Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (Таблица).

Следващия

Controller.Show

Крайна функция

Благодарим ви за ace3mark за този съвет.

Изображение: © Microsoft.

Предишна Статия Следваща Статия

Топ Съвети