Chcem vložiť zodpovedajúce Column C
hodnoty v Column D
keď hodnota stĺpca A a stĺpca B zodpovedá.
Napríklad:
Stĺpec A2 je rovný stĺpcu B2, teraz je stĺpec C2 zaúčtovaný na stĺpci D2
OR
Stĺpec A7 sa rovná stĺpcu B3, potom je stĺpec C3 zaúčtovaný na stĺpci D3
Podrobnosti nájdete na obrazovke, takže máte predstavu, čo sa snažím robiť.
[Kliknite prosím, aby ste videli obrázok] [1]
Kód, ktorý sa snažím, je nižšie, ale nefunguje správne, je to len hodnota jednej bunky:
Private Sub ForComparing_Click()
Dim ws As Worksheet
Dim cel As Range
Dim lastRowA As Long, lastRowB As Long, lastRowC As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row "last row of column A
lastRowB = .Cells(.Rows.Count, "B").End(xlUp).Row "last row of column B
lastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row "last row of column C
For Each cel In .Range("A2:A" & lastRowA) "loop through column A
"check if cell in column A exists in column B
If WorksheetFunction.CountIf(.Range("B2:B" & lastRowB), cel) = 0 Then
.Range("D" & cel.Row) = "No Match"
Else
.Range("D" & cel.Row) = .Range("C" & cel.Row)
End If
Next
End With
End Sub
Upravené 1:
Pozrite si prosím výstup tohto kódu nižšie: Kliknite tu pre zobrazenie obrazovky
Column A3
by sa mali porovnať s Column B5
pretože hodnota D
je v tomto prípade rovnaká a potom by sa mala vytlačiť Column C5
hodnota do Column D3
Okrem toho by mala dávať hodnotu Column D
pre každú hodnotu Column A
ale zastaví sa po prvých 4 hodnotách.
Ďakujem za Váš čas.
Upravené 2:
Pozrite si prosím snímku obrazovky
To, čo ste práve upravili, je úplne v poriadku, ale chcem to urobiť pre každého Column A
hodnota.
Chcem porovnať každý Column A
hodnota s Column B
a potom zodpovedajú Column C
hodnota sa skopíruje Column D
.
odpovede:
3 pre odpoveď č. 1Skúste toto
Option Explicit
Sub Demo()
Dim ws As Worksheet
Dim cel As Range
Dim lastRowA As Long, lastRowB As Long
Set ws = ThisWorkbook.Sheets("Sheet2")
With ws
lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row "last row of column A
lastRowB = .Cells(.Rows.Count, "B").End(xlUp).Row "last row of column B
For Each cel In .Range("A1:A" & lastRowA) "loop through column A
"check if cell in column A exists in column B
If WorksheetFunction.CountIf(.Range("B1:B" & lastRowB), cel) = 0 Then
.Range("C" & cel.Row) = "No Match"
Else
.Range("C" & cel.Row) = cel & " has match in column B"
End If
Next
End With
End Sub
EDIT:
Option Explicit
Sub Demo()
Dim ws As Worksheet
Dim cel As Range, rngC As Range, rngB As Range
Dim lastRowA As Long, lastRowB As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row "last row of column A
lastRowB = .Cells(.Rows.Count, "B").End(xlUp).Row "last row of column B
For Each cel In .Range("A2:A" & lastRowB) "loop through column B
"check if cell in column A exists in column B
If WorksheetFunction.CountIf(.Range("A2:A" & lastRowB), cel) = 0 Then
.Range("D" & cel.Row) = "No Match"
Else
.Range("D" & cel.Row) = Application.WorksheetFunction.Index(.Range("C2:C" & lastRowB), Application.WorksheetFunction.Match(cel, .Range("B2:B" & lastRowB), 0), 1)
End If
Next
End With
End Sub
Pozri obrázok pre referenciu.
Som však stále veľmi pochybný o tom, čo sa snažíte dosiahnuť. Zodpovedáte iba prvým 4 hodnotám zo stĺpca A, ako ste spomenuli vy.ale zastaví sa po prvých 4 hodnotách"Podľa môjho riešenia to však bude zodpovedať 4 riadkom." Column A
na Column B
a ak sa zhoduje, potom zodpovedá Column C
hodnoty sa zobrazia v Column D
, Ak tam nie je žiadny zápas Column D
sa zobrazí No Match
.
0 pre odpoveď č. 2
Sub compare()
Dim i As Integer
i = 1
Do While Cells(i, "A").Value <> ""
If Cells(i, "A").Value <> Cells(i, "B").Value Then
Cells(i, "C").Value = "No Match"
Else
Cells(i, "C").Value = "Match"
End If
i = i + 1
Loop
End Sub
Vyhlásiť počítadlo (i
) a potom nastavte slučku na iteráciu cez stĺpec A. Slučka bude pokračovať, kým sa bunka nenachádza v stĺpci A, ktorá je prázdna.
V rámci slučky pre každý riadok porovnáte 2 príslušné bunky a zmeníte hodnotu bunky v stĺpci C. Nakoniec pridáte 1 ku i
na každej iterácii slučky tak, aby prechádzala každým riadkom.
Ľahší prístup je bez VBA pomocou nižšie uvedeného vzorca:
=IF(A1=B1,"Match", "No Match")