21. august 2008 - 10:56Der er
9 kommentarer og 1 løsning
Opslag i referencetabel - fremhævning af celle
Hej X-perter!
Hvis jeg har en stor tabel (4500 rækker) og skal holde den op mod en lille tabel (100 rækker), hvordan gør man det så nemmest - og hurtigst - i VBA?
Hvis værdien i store tabels kolonne A findes i lille tabels kolonne A, skal store tabels kolonne E i samme række have sort baggrund og hvid skrift.
Det må være noget med en for-next løkke og et lopslag, men jeg kan ikke helt gennemskue, hvordan det skal skrues sammen, så det ikke kommer til at tage forever!
Const lilleTabStart = 12 '-"- Const lilleTabSlut = 15 '-"- Sub test() Dim storeTabRæk For ræk = lilleTabStart To lilleTabSlut storeTabRæk = søgIstoreTab(Cells(ræk, 1)) If storeTabRæk > 0 Then Cells(storeTabRæk, 5).Select
With Selection.Interior .ColorIndex = 1 End With Selection.Font.ColorIndex = 2 End If Next ræk End Sub Private Function søgIstoreTab(vA) With Range("A" & CStr(storTabStart) & ":A" + CStr(storTabSlut)) Set c = .Find(vA, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then række = c.Row Else række = 0 End If End With
Excelent: Elegant forslag, men jeg fik ikke med, at lille_liste ligger i en anden projektmappe - og så kan man ikke lave betinget formatering med fjernreferencer?!?
Supertekst: Din ser meget lovende ud, men hvordan får jeg den til at "se", at de to tabeller findes i hver sin projektmappe?
Rem Koden anbringes i "Lille TABEL" Rem *******************************
Dim storXLS Rem ================= Tilpasses Const storArk = "Ark1" Const storSti = "C:\Documents and Settings\pb\Skrivebord\x_2108\storTabel.xls" Const storTabStart = 1 Const storTabSlut = 10 Rem ==================
Rem ================== Const lilleTabStart = 1 Const lilleTabSlut = 4 Rem ================== Sub udførMarkeringAfStorTabel() Dim storeTabRæk Set storXLS = CreateObject("Excel.application") With storXLS .Workbooks.Open storSti End With
For ræk = lilleTabStart To lilleTabSlut storeTabRæk = søgIstoreTab(Cells(ræk, 1)) If storeTabRæk > 0 Then storXLS.Sheets(storArk).Cells(storeTabRæk, 5).Select
With storXLS.Selection .Interior.ColorIndex = 1 .Font.ColorIndex = 2 End With End If Next ræk
Rem luk "den store" storXLS.Application.DisplayAlerts = False storXLS.Save storXLS.Application.Quit Set storXLS = Nothing
MsgBox ("Markering afsluttet") End Sub Private Function søgIstoreTab(vA) With storXLS.Range("A" & CStr(storTabStart) & ":A" + CStr(storTabSlut)) Set c = .Find(vA, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then række = c.Row Else række = 0 End If End With
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.