Sådan kopieres data fra et Excel-ark til et andet ved hjælp af en formel
Denne FAQ vil lede dig igennem, hvordan du kvalificerer og flytter dine data.
Kopiering af data fra et Excel-ark til et andet med en formel
Start med at åbne fanen Developer i Excel.Derefter skal du konstruere Sheet Controller UserForm. Denne UserForm giver dig mulighed for at vælge, hvor dataene flyttes fra, hvor dataene flyttes til, hvilken kolonne der skal inspiceres for de kvalificerende data for at afgøre, om den bevæger sig, og hvad værdien af kolonneindtastningen skal være at flytte den.
Når du opretter din UserForm, skal du spejle følgende eksempel, og sørg for at navngive hver kontrol korrekt:
Nu hvor du har opbygget brugerformularen, skal du vedhæfte kode til hver kontrol. Dobbeltklik på kontrollen med navnet CommandButton2 i UserForm. Diagrammet til brugerformularen skal ikke længere være synligt, og du bør nu præsenteres med kodestifteren, med standard kodeblok. Denne bestemte kodeblok starter med Private Sub ComandButton2_Click () . Placer markøren under første linie, men før linjen, der siger End Sub . Indtast nu følgende kode for at indstille de offentlige variabler, der skal anvendes til resten af koden:
Gå nu tilbage til UserForm Explorer, og dobbeltklik på den kontrollerede CommandButton3 . Endnu engang bliver UserForm sat til side for kod explorer. Placer markøren på den nyoprettede kodeblok, og indtast følgende kode:
Højreklik på Microsoft Excel-objekter i Explorer- sektionen i Project Explorer. Vælg Indsæt > Modul .
Dobbeltklik på modulet Modul 1, og skriv følgende offentlige variabler:
Nu fortsæt og indsæt tre flere ark i din projektmappe. Du skal nu have fire ark med navnet Sheet1, Sheet2, Sheet3 og Sheet4 .
På ark1 placeres emner i ca. 10-15 linjer ved hjælp af nedenstående billede som et eksempel på testdataene:
Klik derefter på Kontrol > Indsæt > knappen ikonet på fanen Udvikler (øverst på projektmappen):
Nu skal du placere knappen hvor som helst på dit ark. Når det spørger om makroer, skal du vælge Ny .
Du vil bemærke, at den placerede den nye makro i modul2 af projektet. Fremhæv kodeblokken i Module2, skær det fra Module2 . Dobbeltklik nu på Module1 . Når Code Explorer åbnes, højreklik og vælg Indsæt . Du skal nu have en tom kodeblok, der lyder:
Placer markøren inde i kodeblokken, og tilføj følgende kode:
Du vil bemærke, at der er en funktion, der hedder Buildform . Dette opsætter UserForm for det relevante antal ark, efter at de har taget beholdning af dem. For at anvende dette skal du placere følgende kode i Code Explorer, under Button1_Click () subrutinen:
Inden for buildform- funktionen er der en anden funktion kaldet Counttabs . Du skal placere denne kode over Buildform- koden, men under Button1_click- subrutinen:
Hvis både TabFrom og TabTo- variablerne er indstillet, skal du derefter køre createNew () -funktionen. Placer nedenstående kode i Code Explorer, over Button1_click subrutinerne:
Hvis du har valgt at oprette et nyt ark, skal du ændre TabTo- variablen til det nye arknavn . Du skal derefter køre LoopForMove (TabFrom, TabTo) rutinen. I Code Explorer skal du indtaste følgende kode:
For at finde den sidste række af dit ark skal du indtaste nedenstående kode i Code Explorer, over LoopForMove (FromWhatSheet, ToWhatSheet) :
Nu kan du flytte den aktuelle kode ved hjælp af funktionen Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Mellem LooForMove () og createNew () funktionerne skal du placere følgende kode:
Fortsæt med at løbe gennem hver linje på Fra arket og kigge efter kvalificerede poster ved hjælp af en For Loop- funktion.
For at opsummere handlingerne i en UserForm, se følgende illustration:
Her er den samme illustration med denne gang med flere elementer taget i betragtning:
Endelig er her den førnævnte kode i sin helhed:
Mulighed EksplicitOffentlig TabFrom
Offentlig TabTo
Public Qualif As String
Offentlig WhatCol
Offentlig WhatLogic
Offentlige CutVal
Offentlig FormXcel
Funktion FindLastRow (OnWhatsheet)
FindLastRow = Cells (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
Hvis WhatCol = "" Så
WhatCol = "A"
Afslut Hvis
Hvis Qualif = "" Så
Qualif = "X"
Afslut Hvis
ThisWorkbook.Worksheets (FromWhatSheet) .Select
LastRow = FindLastRow (FromWhatSheet)
For Cnt = LastRow til 1 trin -1
CellLoc = WhatCol & Cnt
CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc) .Value
Hvis CellValue = Qualif Then
nret = Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal)
Afslut Hvis
Næste
Slutfunktion
Funktion Moveit (FromSheet, WhatRange, ToWhere, CutVal)
Dim MoveSheetLastRow
Med ThisWorkbook.Worksheets (FromSheet)
.Vælg
.Range (WhatRange) .EntireRow.Select
Slut med
Selection.Copy
Hvis CutVal = True Then
Selection.Cut
Afslut Hvis
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
Hvis TabTo = "Nyt ark" Så
ThisWorkbook.Sheets.Add After: = Ark (Sheets.Count)
NewSheet = ThisWorkbook.ActiveSheet.Name
TabTo = NewSheet
Afslut Hvis
Slutfunktion
Sub-knap1_Klik ()
Dim nret
buildform
Hvis FormXcel = False Then
Hvis TabFrom "" Og TabTo "" Så
lav ny
nret = LoopForMove (TabFrom, TabTo)
Andet
MsgBox ("Angiv venligst 'Fra' og 'Til' ark!")
Afslut Hvis
Afslut Hvis
Slutdel
Funktion Counttabs ()
Counttabs = ThisWorkbook.Worksheets.Count
Slutfunktion
Funktionsbygningsform ()
Dim TabCount
Controller.ComboBox2.AddItem "Nyt ark"
For TabCount = 1 Til Counttabs
Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (TabCount) .Name
Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (TabCount) .Name
Næste
Controller.Show
Slutfunktion
Tak til ace3mark for dette tip.
Billede: © Microsoft.