Så här kopierar du data från ett Excel-ark till en annan med hjälp av en formel
Denna FAQ kommer att gå igenom hur du kvalificerar och flyttar dina data.
Kopiera data från ett Excel-ark till en annan med en formel
Börja med att öppna fliken utvecklare i Excel.Därefter måste du konstruera Sheet Controller UserForm. Med denna UserForm kan du välja var data flyttas från, var data flyttas till, vilken kolumn som ska inspekteras för kvalificerad data för att bestämma om den rör sig och vad värdet av kolumnrubriken ska vara för att flytta den.
När du skapar din UserForm, speglar du följande exempel, var försiktig så att varje kontroll är korrekt:
Nu när du har skapat användarformuläret måste du bifoga kod till varje kontroll. I UserForm dubbelklickar du på kontrollen med namnet CommandButton2 . Diagrammet för användarformen ska inte längre vara synligt, och du bör nu presenteras med kodutforskaren, med standardkodblocket. Detta specifika kodblock börjar med Private Sub ComandButton2_Click () . Placera markören under första raden, men före raden som säger End Sub . Ange nu följande kod för att ställa in de offentliga variablerna som ska tillämpas på resten av koden:
Gå nu tillbaka till UserForm Explorer och dubbelklicka på den kontrollerade kommandotangenten3 . Än en gång får UserForm läggas åt sidan för kodutforskaren. Placera markören på det nyskapade kodblocket och ange följande kod:
I Explorer- delen av Project Explorer högerklickar du på Microsoft Excel Objects . Välj Infoga > Modul .
Dubbelklicka på modulen som heter Module1 och skriv in följande offentliga variabler:
Nu, fortsätt och sätt in ytterligare tre lakan i din arbetsbok. Du borde nu ha fyra ark med namnet Sheet1, Sheet2, Sheet3 och Sheet4 .
På Ark1 lägger du in artiklar på cirka 10-15 linjer, med hjälp av bilden nedan som ett exempel på testdata:
Därefter klickar du på Kontroller > Infoga > knappen ikonen på fliken Utvecklare (ovanpå arbetsboken):
Placera nu knappen någonstans på ditt ark. När den frågar om makron väljer du Ny .
Du kommer att märka att den lade det nya makroet i modul2 av projektet. Markera kodblocket i modul2, klipp det från modul2 . Dubbelklicka nu på Module1 . När koden Explorer öppnas, högerklicka och välj Klistra in . Du borde nu ha ett tomt kodblock som läser:
Placera markören inuti kodblocket och lägg till följande kod:
Du kommer märka att det finns en funktion som heter Buildform . Detta ställer in UserForm för lämpligt antal ark, efter att de har lagrat dem. För att tillämpa detta, placera följande kod i kodutforskaren, nedanför Button1_Click () underrutinen:
Inom buildform- funktionen finns en annan funktion som heter Counttabs . Du borde placera den här koden ovanför Buildform- koden, men under Button1_click- subrutinen:
Om både TabFrom och TabTo- variablerna är inställda, måste du sedan köra funktionen createNew () . Placera underkoden i kodutforskaren ovanför knapprutorna under knapp1_click :
Om du har valt att skapa ett nytt ark, ändra TabTo- variabeln till det nya arknamnet. Du måste då köra LoopForMove (TabFrom, TabTo) rutinen. Ange kod i koden Explorer :
För att hitta den sista raden av ditt ark anger du underkoden i kodfönstret ovanför LoopForMove (FromWhatSheet, ToWhatSheet) :
Nu kan du flytta den aktuella koden med funktionen Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Mellan LooForMove () och createNew () -funktionerna, placera följande kod:
Fortsätt att springa igenom varje rad på Från- arket och leta efter kvalificerade poster, med hjälp av en för-loop- funktion.
För att sammanfatta handlingarna i en UserForm, se följande illustration:
Här är samma illustration med den här gången, med flera element som beaktas:
Slutligen är här ovannämnda kod i sin helhet:
Alternativ ExplicitPublic TabFrom
Public TabTo
Public Qualif As String
Public WhatCol
Public WhatLogic
Public CutVal
Public FormXcel
Funktion FindLastRow (OnWhatsheet)
FindLastRow = Celler (ThisWorkbook.Worksheets (OnWhatsheet) .Rows.Count, 1) .End (xlUp) .Row
Slutfunktion
Funktion LoopForMove (FromWhatSheet, ToWhatSheet)
Dim LastRow, Cnt
Dim CellValue As String
Dim CellLoc
Dim nret
Om WhatCol = "" Då
WhatCol = "A"
Avsluta om
Om Qualif = "" Då
Qualif = "X"
Avsluta om
ThisWorkbook.Worksheets (FromWhatSheet) .Select
LastRow = FindLastRow (FromWhatSheet)
För Cnt = LastRow till 1 steg -1
CellLoc = WhatCol & Cnt
CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc) .Value
Om CellValue = Qualif Then
nret = Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal)
Avsluta om
Nästa
Slutfunktion
Funktion Moveit (FromSheet, WhatRange, ToWhere, CutVal)
Dim MoveSheetLastRow
Med ThisWorkbook.Worksheets (FromSheet)
.Välj
.Range (WhatRange) .EntireRow.Select
Sluta med
Selection.Copy
Om CutVal = True Then
Selection.Cut
Avsluta om
MoveSheetLastRow = FindLastRow (ToWhere)
ThisWorkbook.Worksheets (ToWhere) .Select
ThisWorkbook.Worksheets (ToWhere) .Cells (MoveSheetLastRow + 1, 1) .EntireRow.Select
Selection.Insert
ThisWorkbook.Worksheets (FromSheet) .Select
Application.CutCopyMode = False
Slutfunktion
Funktion createNew ()
Dim NewSheet
Om TabTo = "Nytt blad" Då
ThisWorkbook.Sheets.Add After: = Sheets (Sheets.Count)
NewSheet = ThisWorkbook.ActiveSheet.Name
TabTo = NewSheet
Avsluta om
Slutfunktion
Underknapp1_Click ()
Dim nret
buildform
Om FormXcel = False Then
Om TabFrom "" och TabTo "" Då
skapa ny
nret = LoopForMove (TabFrom, TabTo)
Annan
MsgBox ("Ange ett" Från "och ett" Till "-ark!")
Avsluta om
Avsluta om
Slutdel
Funktion Counttabs ()
Counttabs = ThisWorkbook.Worksheets.Count
Slutfunktion
Funktionsbyggnadsform ()
Dim TabCount
Controller.ComboBox2.AddItem "New Sheet"
För TabCount = 1 Till Counttabs
Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (TabCount) .Name
Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (TabCount) .Name
Nästa
Controller.Show
Slutfunktion
Tack till ace3mark för detta tips.
Bild: © Microsoft.