hur man jämför två rader i Excel med VBA
att jämföra data rad för rad manuellt kan vara en tråkig process om det görs manuellt. Låt oss visa dig hur du jämför två rader i Excel med VBA och automatiserar denna process.
VBA har en inbyggd funktion som heter StrComp som kan jämföra två strängar. Denna funktion returnerar ett heltal baserat på resultatet av jämförelsen. Noll ‘ 0 ‘ betyder en perfekt matchning, och kodexemplet nedan markerar cellen om resultatet inte är lika med ‘0’.
StrComp-funktionen får 3-argument: första 2-argumenten är strängarna som ska jämföras och den sista är jämförelsetypen (tillval). Om det utelämnas bestämmer inställningen för alternativ jämför typen av jämförelse. Nedan finns alla tillgängliga alternativ:
- vbUseCompareOption: utför en jämförelse med inställningen för alternativet jämför uttalande.
- vbBinaryCompare: utför en binär jämförelse. Skiftlägeskänslig.
- vbTextCompare: utför en textjämförelse. Inte skiftlägeskänslig.
- vbdatabasjämföra: Utför en jämförelse baserad på information i din databas. Endast Microsoft Access.
koden kräver att användaren väljer raderna i ett enda intervall. Markerat område tilldelas en intervallvariabel bothrows och varje cell i det intervallet jämförs kolumn för kolumn. Med hjälp av ett med-uttalande behöver vi inte upprepa bothrows för varje rad, och för…nästa slinga är hur vi kan kontrollera varje cell.
markering
när du har fått intervallet kan du använda egenskapen ColorIndex för att ställa in det intervallet en färg. Här är några indexnummer för färger:
- 3: Röd
- 5: Blå
- 6: Gul
- 0: ingen fyllning
först måste du lägga till modulen i arbetsboken eller tilläggsfilen. Kopiera och klistra in koden i modulen för att köra den. Den största fördelen med modulmetoden är att den tillåter att spara koden i filen så att den kan användas igen senare. Dessutom kan underrutinerna i moduler användas av ikoner i menybanden eller kortkommandon. Kom ihåg att spara filen i antingen xlsm-eller XLAM-format för att spara din VBA-kod.
provkod för markering
Sub HighlightRowDifferences() Dim bothrows As Range, i As Integer Set bothrows = Selection With bothrows For i = 1 To .Columns.Count If Not StrComp(.Cells(1, i), .Cells(2, i), vbBinaryCompare) = 0 Then Range(.Cells(1, i), .Cells(2, i)).Interior.ColorIndex = 6 End If Next i End WithEnd Sub