23. juni 2011 - 12:25Der er
16 kommentarer og 1 løsning
VBA, Match og Index?
Hej Eksperter. Jeg har brug for en smule VBA kode, og jeg forstiller mig der skal bruges noget match og index. Desværre er jeg ret tabt til VBA, så jeg håber der en venlig sjæl der kan hjælpe mig.
På ark 2 har jeg fra kolonne B11 til B50 et unikt ID på hver linje. Dette id går igen på ark 1 i kolonne D.
Når jeg kører makroen, vil jeg gerne at de to kolonner indeholdende DI sammenholdes, og hvor der er et match, skal der på ark 1 i kolonne M, på samme linje som Id'et, skrives "ABCD"
Tak for jeres svar. Desværre er det ikke helt hvad jeg søger. Id'et på ark 2 kan ændre sig, men når først der har været et match mellem id'et på ark 1 og ark 2, skal teksten "abcd" på ark 1 forblive. Derfor kan jeg ikke blot opstille et simpelt lopslag.
Rodet forklaring, men jeg håber det giver lidt mening ;)
Du kan lige starte med udgaven, hvor knappen er på Ark1. Koden ligger bag Ark1
Jeg har lavet den i den Engelske udgave af Excel 2003. Vil mene, at jeg har ændret Sheet1 + 2 til Ark1 + 2, de steder, hvor der er nødvendigt, da jeg går ud fra, at du benytter den Danske udgave ?
Jeg vender lige tilbage med den "rigige" udgave.
Kan du selv fikse knappen, som skal kalde koden ?
----------------
Private Sub SøgOgMatch() Dim myRange As Range Dim rtal As Double Dim counter As Integer Dim antalrækker As Integer
'slå skærmopdateringen til igen Application.ScreenUpdating = False
'vælg D2 på Sheet1 Sheets(1).Cells(2, 4).Select
'set myRange = området ned til sidste værdi i kolonnen med den valgte celle Set myRange = Selection.CurrentRegion
'tæl antal rækker/celler i området antalrækker = myRange.Count
'for hver celle i området - kolonne D på sheet1 For Each r In myRange
'vælg aktuel celle r.Cells.Select
'sæt rtal = den aktuelle celleværdi rtal = r.Value
'løb ned gennem cellerne i kolonne B på Sheet2 indtil første tomme celle 'start i celle B11 For counter = 11 To Sheets("Ark2").Range("B5536").End(xlUp).Row 'set curcell = den næste celle i kolonnen/området Set curcell = Worksheets("Sheet2").Cells(counter, 2)
'hvis der er et match mellem de sheet1 og sheet2 If rtal = Worksheets("Ark2").Cells(counter, 2).Value Then
'skriv "ABCD" i kolonne M r.Cells.Offset(0, 9).Value = "ABCD"
End If
'tjek næste celle i kolonne B på sheet2 Next counter
'næste celle - kolonne D på sheet1 Next
'slå skærmopdateringen til igen Application.ScreenUpdating = True
'info til brugeren MsgBox "Søgningen fuldført", vbInformation & vbOKOnly
Hermed en udgaven, som kan kaldes fra en knap på Ark2. Koden ligger i et modul i VBA editoren (alt+f11).
OBS: Der er IKKE taget højde for fejlhåndtering, hvis celler indeholder alt andet en heltal ? ... men det kan helt sikkert laves.
Prøv den og gi´ lyd, hvis der er tvivl eller skidtet ikke virker ?
-------
Sub SøgOgMatch() Dim myRange As Range Dim rtal As Double Dim counter As Integer Dim antalrækker As Integer
'slå skærmopdateringen til igen Application.ScreenUpdating = False
'vælg B11 på Ark2 Sheets(2).Cells(11, 2).Select
'set myRange = området ned til sidste værdi i kolonnen med den valgte celle Set myRange = Selection.CurrentRegion
'tæl antal rækker/celler i området antalrækker = myRange.Count
'for hver celle i området - kolonne B på Ark1 For Each r In myRange
'vælg aktuel celle r.Cells.Select
'sæt rtal = den aktuelle celleværdi rtal = r.Value
'løb ned gennem cellerne i kolonne D på Ark1 indtil første tomme celle 'start i celle D2 For counter = 2 To Sheets("Ark1").Range("D5536").End(xlUp).Row
'set curcell = den næste celle i kolonnen/området Set curcell = Worksheets("Ark1").Cells(counter, 4)
'hvis der er et match mellem de Ark1 og Ark2 If rtal = Worksheets("Ark1").Cells(counter, 4).Value Then
'skriv "ABCD" i kolonne M r.Cells.Offset(0, 9).Value = "ABCD"
End If
'tjek næste celle i kolonne B på Ark2 Next counter
'næste celle - kolonne D på Ark1 Next
'slå skærmopdateringen til igen Application.ScreenUpdating = True
'info til brugeren MsgBox "Søgningen fuldført", vbInformation & vbOKOnly
Hej Nicolai, Jeg så lige, at der faktisk er byttet om på placeringen af "ABCD". I ovenstående kode, bliver "ABCD" placeret på ark2 - Jeg vil gerne hvis det kan blive på ark1 i stedet.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.