Як копіювати дані з одного аркуша Excel в інший за допомогою формули
Цей розділ поширених запитань допоможе вам визначити та перемістити дані.
Копіювання даних з одного листа Excel в інший з формулою
Почніть з відкриття вкладки розробника в Excel.Далі, вам потрібно побудувати UserForm Sheet Controller. Ця UserForm дозволяє вибрати, звідки переміщуються дані, куди переносяться дані, який стовпець перевіряти, щоб кваліфікаційні дані визначили, чи переміщуються дані, і яке значення має бути стовпець для переміщення.
Під час створення користувацької форми віддзеркаліть наступний приклад, обережно назвавши кожне керування правильно:
Тепер, коли ви створили Userform, вам необхідно додати код до кожного елемента керування. У UserForm двічі клацніть елемент керування з ім'ям CommandButton2 . Діаграма Userform більше не повинна бути видимою, і тепер ви повинні бути представлені разом з кодом explorer, з кодовим блоком за замовчуванням. Цей блок коду починається з Private Sub ComandButton2_Click () . Розмістіть курсор під першим рядком, але перед лінією, яка говорить Закінчення Sub . Тепер введіть наступний код, щоб налаштувати загальнодоступні змінні, які будуть застосовані до решти коду:
Тепер поверніться до Провідника UserForm і двічі клацніть елемент управління, позначений CommandButton3 . У черговий раз UserForm стає осторонь для explorer коду. Розмістіть курсор на новоствореному блоці коду та введіть наступний код:
У розділі Explorer провідника проекту клацніть правою кнопкою миші об'єкти Microsoft Excel . Виберіть Вставити > Модуль .
Двічі клацніть модуль Module1 і введіть такі загальнодоступні змінні:
А тепер вставте ще три аркуші у свою книгу. Тепер ви повинні мати чотири аркуші, названі Sheet1, Sheet2, Sheet3 і Sheet4 .
На Sheet1 помістіть елементи приблизно 10-15 рядків, використовуючи наведене нижче зображення як приклад тестових даних:
Далі на вкладці " Розробник" (у верхній частині робочої книги) клацніть елементи керування > Вставити > значок кнопки :
Тепер розмістіть кнопку в будь-якому місці аркуша. Коли він запитує про макроси, виберіть Новий .
Ви помітите, що він розмістив новий макрос у модулі2 проекту. Виділіть блок коду в модулі2, виріжте його з модуля2 . Тепер двічі клацніть Модуль1 . Коли відкриється Провідник коду, клацніть правою кнопкою миші та виберіть Вставити . Тепер ви повинні мати порожній блок коду, який читає:
Розмістіть курсор у блоці коду та додайте наступний код:
Ви помітите, що існує функція, яка називається Buildform . Після цього інвентаризація буде встановлена для відповідної кількості аркушів після інвентаризації. Щоб застосувати це, помістіть наступний код у Провідник коду, нижче підпрограми Button1_Click () :
У функції buildform є ще одна функція, яка називається Counttabs . Цей код слід розмістити над кодом " Формування", але нижче підпрограми Button1_click :
Якщо встановлено як змінні TabFrom, так і TabTo, вам знадобиться запустити функцію createNew () . Помістіть нижній код у Провідник коду, вище підпрограми Button1_click :
Якщо ви вирішили створити новий аркуш, змініть змінну TabTo на нове ім'я аркуша. Потім потрібно запустити процедуру LoopForMove (TabFrom, TabTo) . У Провіднику коду введіть наступний код:
Щоб знайти останній рядок вашого аркуша, введіть нижченаведений код у Провідник коду, над LoopForMove (FromWhatSheet, ToWhatSheet) :
Тепер ви зможете перемістити фактичний код за допомогою функції Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Між функціями LooForMove () і createNew () помістіть наступний код:
Продовжуйте переходити по кожному рядку на аркуші From, шукаючи кваліфіковані записи, використовуючи функцію For Loop .
Щоб підсумувати дії форми користувача, див.
Ось така ж ілюстрація, на цей раз, з урахуванням більшої кількості елементів:
Нарешті, наведений вище код повністю:
Опція ЯвнаЗагальнодоступна TabFrom
Публічна вкладка
Громадський Qualif As String
Публічний WhatCol
Громадський WhatLogic
Громадський CutVal
Публічний FormXcel
Функція FindLastRow (OnWhatsheet)
FindLastRow = Cells (ThisWorkbook.Worksheets) .Rows.Count, 1) .End (xlUp) .Row
Функція End
Функція LoopForMove (FromWhatSheet, ToWhatSheet)
Dim LastRow, Cnt
Замінити розмір клітинки як рядок
Dim CellLoc
Дим nret
Якщо WhatCol = "" Тоді
WhatCol = "A"
End If
Якщо Qualif = "" Тоді
Qualif = "X"
End If
ThisWorkbook.Worksheets (FromWhatSheet). Виберіть
LastRow = FindLastRow (FromWhatSheet)
Для Cnt = LastRow До 1 Крок -1
CellLoc = WhatCol & Cnt
CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc).
Якщо CellValue = Qualif Потім
nret = Перемістити (відЧастного листа, CellLoc, ToWhatSheet, CutVal)
End If
Далі
Функція End
Функція Moveit (з листа, щообласті, до місця, CutVal)
Dim MoveSheetLastRow
З цією книгою.
.Виберіть
.Range (WhatRange) .EntireRow.Select
Завершити
Виділення
Якщо CutVal = True Тоді
Виділення
End If
MoveSheetLastRow = FindLastRow (ToWhere)
ThisWorkbook.Worksheets (ToWhere) .Виберіть
Целюли (MoveSheetLastRow + 1, 1) .EntireRow.Select
Встановіть
ThisWorkbook.Worksheets (FromSheet). Виберіть
Application.CutCopyMode = False
Функція End
Функція createNew ()
Dim NewSheet
Якщо TabTo = "Новий аркуш" Потім
ThisWorkbook.Sheets.Add After: = Листи (Sheets.Count)
NewSheet = ThisWorkbook.ActiveSheet.Name
TabTo = NewSheet
End If
Функція End
Sub Button1_Click ()
Дим nret
buildform
Якщо FormXcel = False Then
Якщо TabFrom "" І TabTo "" Тоді
створити новий
nret = LoopForMove (TabFrom, TabTo)
Ще
MsgBox ("Будь ласка, встановіть лист" Від "та" До "!)
End If
End If
End Sub
Функція Counttabs ()
Counttabs = ThisWorkbook.Worksheets.Count
Функція End
Функція buildform ()
Див
Controller.ComboBox2.AddItem "Новий аркуш"
Для TabCount = 1 для Counttabs
Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (Таблиця).
Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (Таблиця).
Далі
Controller.Show
Функція End
Дякуємо за ace3mark за цей відгук.
Зображення: © Microsoft.