Så här går du igenom en lista med data i ett kalkylblad med hjälp av makron i Excel
Sammanfattning
När du skriver ett Microsoft Visual Basic for Applications (VBA) -makro kan du behöva gå igenom en lista med data i ett kalkylblad. Det finns flera metoder för att utföra den här uppgiften. Avsnittet ”Mer information” i den här artikeln innehåller information om de metoder som du kan använda för att söka i följande typer av listor:
- En lista som innehåller ett känt och konstant antal rader.
- En dynamisk lista eller en lista med ett okänt antal rader.
- En lista som innehåller en specifik post.
Mer information
Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov. Följande kodexempel förutsätter att listan har en rubrikrad som börjar i cell A1 och data som börjar i cell A2.
Så här söker du i en lista med ett konstant och känt antal rader
Den här koden flyttar ned kolumn A till slutet av listan:
Sub Test1()
Dim x As Integer
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
' Insert your code here.
' Selects cell down 1 row from active cell.
ActiveCell.Offset(1, 0).Select
Next
End Sub
Så här söker du i en dynamisk lista eller en lista med ett okänt antal rader
Den här koden flyttar ned kolumn A till slutet av listan. (Den här koden förutsätter att varje cell i kolumn A innehåller en post fram till slutet.)
Sub Test2()
' Select cell A2, *first line of data*.
Range("A2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
' Insert your code here.
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Observera Om det finns tomma celler i kolumn A i data ändrar du koden så att den tar hänsyn till det här villkoret. Se till att de tomma cellerna är ett konsekvent avstånd från varandra. Om till exempel varannan cell i kolumn A är tom (till exempel kan den här situationen uppstå om varje ”post” använder två rader, med den andra raden indragen en cell), kan den här loopen ändras på följande sätt:
' Set Do loop to stop when two consecutive empty cells are reached.
Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
' Insert your code here.
'
' Step down 2 rows from present location.
ActiveCell.Offset(2, 0).Select
Loop
Så här söker du i en lista efter en specifik post
Den här koden flyttar ned kolumn A till slutet av listan:
Sub Test3()
Dim x As String
Dim found As Boolean
' Select first line of data.
Range("A2").Select
' Set search variable value.
x = "test"
' Set Boolean variable "found" to false.
found = False
' Set Do loop to stop at empty cell.
Do Until IsEmpty(ActiveCell)
' Check active cell for search value.
If ActiveCell.Value = x Then
found = TRUE
Exit Do
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
' Check for found.
If found = True Then
Msgbox "Value found in cell " & ActiveCell.Address
Else
Msgbox "Value not found"
End If
End Sub
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för