Как да копирате данни от един лист 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.