VBA Excel 如何匹配两列并将数据粘贴到另一列
VBA Excel how to match two column and paste the data in anotherone
我是 vba 的新人,我想问一些关于我制作的 VBA 代码的问题。
我已经读过这个link:
VBA - Match Column Data and paste
但它不适合我的需要。
我的目标是将 E 列与 F 列匹配,并在 G 中的行内给出描述以粘贴到 H 列中。
如果匹配为假,则获取消息框错误。
我的问题是信息框总是出现在我的桌子上,但没有匹配。
哪个是我的错误?
谢谢大家。
This is an example of my sheet:
到目前为止,这是我的代码:
Sub AssociazioneCodice()
'Dichiarazione della variabile per conteggio righe
Dim countRows, r, c, e As Integer
Dim trovato As Boolean
trovato = False
'Applicazione conteggio righe - Achtung!: Inserire sempre correttamente il nome del foglio dove si trovano i riferimenti da contare
countRows = ThisWorkbook.Worksheets("Foglio2").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
'Il for serve a cercare il numero del codice nella colonna E dei codici
For r = 1 To countRows
'Con il secondo for effettuo la corrispondenza tra la colonna dei codici E e confronto con i codici di riferimento generici della colonna F
For e = 1 To countRows
'L'if seguente serve a dire SE la cella della riga 'r' della colonna E è uguale alla cella della riga 'e' della colonna F
If Cells(r, 5) = Cells(e, 6) Then
'visto che ho trovato corrispondenza, allora prendi il contenuto della riga 'e' della colonna G e copiala nella riga 'r' della colonna H
Cells(r, 8) = Cells(e, 7)
e = countRows 'una volta controllato il codice e trovato, passo alla riga 'r' successiva
trovato = True
End If
If trovato = False Then
'SE non è stato trovato il codice, allora manda un messaggio e scrivi "ERRORE" nella riga'r' della colonna H
MsgBox "Codice non in elenco " & Cells(r, 5).Value & " Riga " & r
Cells(r, 8) = " ERRORE "
Else: trovato = False 'Se ha trovato il codice, allora viene resettato a False il booleano 'trovato'
End If
Next e
Next r
MsgBox " Numero di avvisi a sistema " & countRows
End Sub
欢迎来到 SO Antonio,(我是意大利人,我已经研究过你的问题)试着把 next e
放在 If trovato = False Then
之前......
让我更新...
Sub AssociazioneCodice()
'Dichiarazione della variabile per conteggio righe
Dim countRows, r, c, e As Integer
Dim trovato As Boolean
'Applicazione conteggio righe - Achtung!: Inserire sempre correttamente il nome del foglio dove si trovano i riferimenti da contare
countRows = ThisWorkbook.Worksheets("Foglio2").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
'Il for serve a cercare il numero del codice nella colonna E dei codici
For r = 1 To countRows
'Con il secondo for effettuo la corrispondenza tra la colonna dei codici E e confronto con i codici di riferimento generici della colonna F
For e = 1 To countRows
'L'if seguente serve a dire SE la cella della riga 'r' della colonna E è uguale alla cella della riga 'e' della colonna F
If Cells(r, 5) = Cells(e, 6) Then
'visto che ho trovato corrispondenza, allora prendi il contenuto della riga 'e' della colonna G e copiala nella riga 'r' della colonna H
Cells(r, 8) = Cells(e, 7)
e = countRows 'una volta controllato il codice e trovato, passo alla riga 'r' successiva
trovato = True
End If
Next e
If trovato = False Then
'SE non è stato trovato il codice, allora manda un messaggio e scrivi "ERRORE" nella riga'r' della colonna H
MsgBox "Codice non in elenco " & Cells(r, 5).Value & " Riga " & r
Cells(r, 8) = " ERRORE "
Else
trovato = False 'Se ha trovato il codice, allora viene resettato a False il booleano 'trovato'
End If
Next r
MsgBox " Numero di avvisi a sistema " & countRows
End Sub
您还可以使用:
Sub AssociazioneCodice()
Dim LR As Long, i As Long
With Worksheets("Sheet1")
LR = .Range("E" & .Rows.Count).End(xlUp).Row
For i = 2 To LR
If .Range("E" & i).Value = .Range("F" & i).Value Then
.Range("H" & i).Value = .Range("G" & i).Value
End If
Next i
End With
End Sub
我是 vba 的新人,我想问一些关于我制作的 VBA 代码的问题。
我已经读过这个link: VBA - Match Column Data and paste 但它不适合我的需要。
我的目标是将 E 列与 F 列匹配,并在 G 中的行内给出描述以粘贴到 H 列中。
如果匹配为假,则获取消息框错误。
我的问题是信息框总是出现在我的桌子上,但没有匹配。
哪个是我的错误?
谢谢大家。
This is an example of my sheet:
到目前为止,这是我的代码:
Sub AssociazioneCodice()
'Dichiarazione della variabile per conteggio righe
Dim countRows, r, c, e As Integer
Dim trovato As Boolean
trovato = False
'Applicazione conteggio righe - Achtung!: Inserire sempre correttamente il nome del foglio dove si trovano i riferimenti da contare
countRows = ThisWorkbook.Worksheets("Foglio2").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
'Il for serve a cercare il numero del codice nella colonna E dei codici
For r = 1 To countRows
'Con il secondo for effettuo la corrispondenza tra la colonna dei codici E e confronto con i codici di riferimento generici della colonna F
For e = 1 To countRows
'L'if seguente serve a dire SE la cella della riga 'r' della colonna E è uguale alla cella della riga 'e' della colonna F
If Cells(r, 5) = Cells(e, 6) Then
'visto che ho trovato corrispondenza, allora prendi il contenuto della riga 'e' della colonna G e copiala nella riga 'r' della colonna H
Cells(r, 8) = Cells(e, 7)
e = countRows 'una volta controllato il codice e trovato, passo alla riga 'r' successiva
trovato = True
End If
If trovato = False Then
'SE non è stato trovato il codice, allora manda un messaggio e scrivi "ERRORE" nella riga'r' della colonna H
MsgBox "Codice non in elenco " & Cells(r, 5).Value & " Riga " & r
Cells(r, 8) = " ERRORE "
Else: trovato = False 'Se ha trovato il codice, allora viene resettato a False il booleano 'trovato'
End If
Next e
Next r
MsgBox " Numero di avvisi a sistema " & countRows
End Sub
欢迎来到 SO Antonio,(我是意大利人,我已经研究过你的问题)试着把 next e
放在 If trovato = False Then
之前......
让我更新...
Sub AssociazioneCodice()
'Dichiarazione della variabile per conteggio righe
Dim countRows, r, c, e As Integer
Dim trovato As Boolean
'Applicazione conteggio righe - Achtung!: Inserire sempre correttamente il nome del foglio dove si trovano i riferimenti da contare
countRows = ThisWorkbook.Worksheets("Foglio2").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
'Il for serve a cercare il numero del codice nella colonna E dei codici
For r = 1 To countRows
'Con il secondo for effettuo la corrispondenza tra la colonna dei codici E e confronto con i codici di riferimento generici della colonna F
For e = 1 To countRows
'L'if seguente serve a dire SE la cella della riga 'r' della colonna E è uguale alla cella della riga 'e' della colonna F
If Cells(r, 5) = Cells(e, 6) Then
'visto che ho trovato corrispondenza, allora prendi il contenuto della riga 'e' della colonna G e copiala nella riga 'r' della colonna H
Cells(r, 8) = Cells(e, 7)
e = countRows 'una volta controllato il codice e trovato, passo alla riga 'r' successiva
trovato = True
End If
Next e
If trovato = False Then
'SE non è stato trovato il codice, allora manda un messaggio e scrivi "ERRORE" nella riga'r' della colonna H
MsgBox "Codice non in elenco " & Cells(r, 5).Value & " Riga " & r
Cells(r, 8) = " ERRORE "
Else
trovato = False 'Se ha trovato il codice, allora viene resettato a False il booleano 'trovato'
End If
Next r
MsgBox " Numero di avvisi a sistema " & countRows
End Sub
您还可以使用:
Sub AssociazioneCodice()
Dim LR As Long, i As Long
With Worksheets("Sheet1")
LR = .Range("E" & .Rows.Count).End(xlUp).Row
For i = 2 To LR
If .Range("E" & i).Value = .Range("F" & i).Value Then
.Range("H" & i).Value = .Range("G" & i).Value
End If
Next i
End With
End Sub