Jak skopiować dane z jednego arkusza programu Excel do innego za pomocą formuły

Wielu użytkowników programu Excel boryka się z problemami z przenoszeniem danych z arkusza wprowadzania do zarchiwizowanego arkusza. Chociaż Excel jest arkuszem kalkulacyjnym zaprojektowanym do wykonywania złożonych obliczeń, takich jak tablice amortyzacji kredytów hipotecznych lub śledzenie danych dotyczących sprzedaży, większość ludzi nigdy nie bada bardziej szczegółowych operacji.

To FAQ przeprowadzi Cię przez proces kwalifikowania i przenoszenia danych.

Kopiowanie danych z jednego arkusza programu Excel do innego za pomocą wzoru

Rozpocznij od otwarcia karty programisty w programie Excel.

Następnie musisz skonstruować UserForm Sheet Controller UserForm. Ten UserForm pozwala wybrać miejsce, z którego dane są przenoszone, gdzie dane są przenoszone, jaką kolumnę sprawdzić dane kwalifikujące, aby określić, czy się porusza, i jaka powinna być wartość wpisu kolumny, aby go przenieść.

Podczas tworzenia formularza UserForm należy wykonać kopię lustrzaną następującego przykładu, zwracając uwagę na poprawne nazywanie każdego kontrolki:

Teraz, gdy skonstruowałeś Userform, musisz dołączyć kod do każdej kontrolki. W formularzu użytkownika kliknij dwukrotnie formant o nazwie CommandButton2 . Schemat formularza użytkownika nie powinien być już widoczny, a teraz powinien zostać wyświetlony eksplorator kodu z domyślnym blokiem kodu. Ten konkretny blok kodu zaczyna się od Private Sub ComandButton2_Click () . Umieść kursor pod pierwszą linią, ale przed linią, która mówi End Sub . Teraz wprowadź następujący kod, aby skonfigurować zmienne publiczne do zastosowania w pozostałej części kodu:

Wróć do Eksploratora UserForm i kliknij dwukrotnie kontrolkę oznaczoną CommandButton3 . Po raz kolejny UserForm zostaje odłożony na przeglądarkę kodów. Umieść kursor na nowo utworzonym bloku kodu i wprowadź następujący kod:

W sekcji Eksplorator Eksploratora projektu kliknij prawym przyciskiem myszy Obiekty Microsoft Excel . Wybierz Wstaw > Moduł .

Kliknij dwukrotnie moduł o nazwie Module1 i wpisz następujące zmienne publiczne:

Teraz idź dalej i włóż trzy dodatkowe arkusze do skoroszytu. Powinieneś mieć teraz cztery arkusze o nazwie Arkusz1, Arkusz2, Arkusz3 i Arkusz4 .

Na Sheet1 umieść elementy w około 10-15 liniach, używając poniższego obrazu jako przykładu danych testowych:

Następnie na karcie Deweloper (nad skoroszytem) kliknij opcję Elementy sterujące > Wstaw > ikonę przycisku :

Teraz umieść przycisk w dowolnym miejscu na arkuszu. Gdy pyta o makra, wybierz Nowy .

Zauważysz, że umieścił nowe makro w Module2 projektu. Zaznacz blok kodu w Module2, odetnij go od Module2 . Teraz kliknij dwukrotnie Module1 . Po otwarciu Eksploratora kodu kliknij prawym przyciskiem myszy i wybierz Wklej . Powinieneś teraz mieć pusty blok kodu, który brzmi:

Umieść kursor wewnątrz bloku kodu i dodaj następujący kod:

Zauważysz, że istnieje funkcja o nazwie Buildform . Powoduje to utworzenie UserForm dla odpowiedniej liczby arkuszy po ich spisaniu. Aby to zastosować, umieść następujący kod w Eksploratorze kodu, poniżej procedury Button1_Click () :

W funkcji buildform znajduje się inna funkcja o nazwie Counttabs . Powinieneś umieścić ten kod powyżej kodu Buildform, ale poniżej podprogramu Button1_click :

Jeśli ustawione są zarówno zmienne TabFrom, jak i TabTo, należy uruchomić funkcję createNew () . Umieść poniższy kod w Eksploratorze kodu, powyżej podprogramów Button1_click :

Jeśli wybrałeś utworzenie nowego arkusza, zmień zmienną TabTo na nową nazwę arkusza. Następnie musisz uruchomić procedurę LoopForMove (TabFrom, TabTo) . W Eksploratorze kodu wprowadź następujący kod:

Aby znaleźć ostatni wiersz arkusza, wprowadź poniższy kod do Eksploratora kodu, powyżej LoopForMove (ZWhatSheet, ToWhatSheet) :

Teraz będziesz mógł przenieść rzeczywisty kod za pomocą funkcji Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Pomiędzy funkcjami LooForMove () i createNew () umieść następujący kod:

| fantazyjne]

Kontynuuj pętlę w każdej linii na arkuszu Z, szukając zakwalifikowanych wpisów, używając funkcji Do pętli .

Podsumowując działania UserForm, zobacz następującą ilustrację:

Oto ta sama ilustracja, tym razem z większą liczbą elementów branych pod uwagę:

Wreszcie, tutaj jest wspomniany kod w całości:

 Opcja Wyraźna

Karta publiczna Od

Public TabTo

Public Qualif As String

Public WhatCol

Public WhatLogic

Public CutVal

Public FormXcel

Funkcja FindLastRow (OnWhatsheet)

FindLastRow = Komórki (ThisWorkbook.Worksheets (OnWhatsheet) .Rows.Count, 1) .End (xlUp) .Row

Zakończ funkcję

Funkcja LoopForMove (FromWhatSheet, ToWhatSheet)

Dim LastRow, Cnt

Dim CellValue As String

Dim CellLoc

Dim nret

If WhatCol = "" Następnie

WhatCol = „A”

Zakończ jeśli

Jeśli Qualif = "" Następnie

Qualif = „X”

Zakończ jeśli

ThisWorkbook.Worksheets (FromWhatSheet) .Wybierz

LastRow = FindLastRow (FromWhatSheet)

Dla Cnt = LastRow Do 1 kroku -1

CellLoc = WhatCol & Cnt

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

Jeśli CellValue = Kwalifikuj się wtedy

nret = Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal)

Zakończ jeśli

Kolejny

Zakończ funkcję

Funkcja Moveit (FromSheet, WhatRange, ToWhere, CutVal)

Dim MoveSheetLastRow

Z ThisWorkbook.Worksheets (FromSheet)

.Wybierz

.Range (WhatRange) .EntireRow.Select

Kończyć z

Wybór. Kopiuj

Jeśli CutVal = True Then

Selection.Cut

Zakończ jeśli

MoveSheetLastRow = FindLastRow (ToWhere)

ThisWorkbook.Worksheets (ToWhere) .Wybierz

ThisWorkbook.Worksheets (ToWhere) .Cells (MoveSheetLastRow + 1, 1) .EntireRow.Select

Selection.Insert

ThisWorkbook.Worksheets (FromSheet) .Wybierz

Application.CutCopyMode = False

Zakończ funkcję

Funkcja createNew ()

Dim NewSheet

If TabTo = "Nowy arkusz" Następnie

ThisWorkbook.Sheets.Add After: = Sheets (Sheets.Count)

NewSheet = ThisWorkbook.ActiveSheet.Name

TabTo = NewSheet

Zakończ jeśli

Zakończ funkcję

Sub Button1_Click ()

Dim nret

buildform

Jeśli FormXcel = False Then

Jeśli TabFrom "" I TabTo "" Następnie

tworzyć nowe

nret = LoopForMove (TabFrom, TabTo)

Jeszcze

MsgBox („Proszę ustawić arkusz„ Od ”i„ Do ”!”)

Zakończ jeśli

Zakończ jeśli

Napis końcowy

Funkcje Counttabs ()

Liczniki = ThisWorkbook.Worksheets.Count

Zakończ funkcję

Funkcja buildform ()

Dim TabCount

Controller.ComboBox2.AddItem „Nowy arkusz”

Dla TabCount = 1 Do Counttabs

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

Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (TabCount) .Name

Kolejny

Controller.Show

Zakończ funkcję

Dziękujemy ace3mark za tę wskazówkę.

Obraz: © Microsoft.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki