我是vba的新手,我想问一些我制作的VBA代码。
我已经阅读了以下链接: 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
答案 0 :(得分:0)
欢迎来到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
答案 1 :(得分:0)
您还可以使用:
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