我正在努力创建嵌套循环,这是我第一次努力。
当匹配电子邮件列中的单元格值时,我需要将ID值分配给源列中的单元格。
,即从电子邮件列中,第一个单元格值为bobjohnson@email.com,其ID值为0我需要在Source列中找到bobjohnson@email.com的所有单元格,并将它们分配为0
我知道我这里有各种各样的东西,但经过几个小时的累人后我却求助了
谢谢
Sub Source()
Application.ScreenUpdating = False
Dim i As Integer
Dim lrow As Long
Dim Myfind As String
Dim Idvalue As String
Dim firstaddress As String
Dim c
lrow = Sheets("Sheet2").Range("C65336").End(xlUp).Row
With Worksheets(2)
For i = 1 To lrow
Myfind = Cells(i, 3).Text
Idvalue = Cells(i, 2).Value
Set c = Range("A:A").Find(Myfind, LookIn:=xlValues)
If Not c Is Nothing Then
firstaddress = c.Address
Do
Range("MyFind").Select
ActiveCell.FormulaR1C1 = Idvalue
Set c = Range("A:A").FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstaddress
End If
Next i
End With
End Sub
原始文件
email ID Source
bobjohnson@email.com 0 pollypots@email.com
bobjohnson@email.com 0 juanalvarez@email.com
frankcarpet@email.com 1 bettysue@email.com
juanalvarez@email.com 2 bobjohnson@email.com
juanalvarez@email.com 2 bettysue@email.com
sallybersong@email.com 3 Juanalvarez@email.com
sallybersong@email.com 3 yaraflowers@email.com
pollypots@email.com 4 yaraflowers@email.com
yaraflowers@email.com 5 juanalvarez@email.com
yaraflowers@email.com 5 pollypots@email.com
yaraflowers@email.com 5 bobjohnson@email.com
yaraflowers@email.com 5 bettysue@email.com
bettysue@email.com 6 yaraflowers@email.com
结果文件
email ID Source
bobjohnson@email.com 0 4
bobjohnson@email.com 0 2
frakkcarpet@email.com 1 6
juanalvarez@email.com 2 0
juanalvarez@email.com 2 6
sallybersong@email.com 3 2
sallybersong@email.com 3 5
pollypots@email.com 4 5
yaraflowers@email.com 5 2
yaraflowers@email.com 5 4
yaraflowers@email.com 5 0
yaraflowers@email.com 5 6
bettysue@email.com 6 5
答案 0 :(得分:1)
我假设两个块的第一列中的电子邮件的数量和顺序是相同的。当然,您需要对此进行修改,因为我将所有数据放在一个工作表中的A到F列中。
Sub Source()
Dim lLastRow As Long
Dim i As Long
lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lLastRow
Range("F" & i).Value = Range("D:D").Find(Range("A" & i).Offset(0, 2).Value).Offset(0, 1).Value
Next i
End Sub
顺便说一下,这里
Range("MyFind").Select
您指的是名为MyFind
的命名范围。我怀疑这是你的意图。
答案 1 :(得分:1)
如果我理解正确,你想在这里实现的是根据A列和B列之间的关系找到id,然后用C列中的id替换电子邮件。通过阅读你的代码,我怀疑你是使用错误的列查找电子邮件地址。我在代码的顶部修改了几行,这里的答案可以达到如上所示的结果。
Sub Source()
Application.ScreenUpdating = False
Dim i As Integer
Dim lrow As Integer
Dim Myfind As Variant
Dim Idvalue As Variant
Dim firstaddress As String
Dim c As Range
lrow = Worksheets("Sheet2").Range("C65336").End(xlUp).Row
With Worksheets("Sheet2")
For i = 2 To lrow
Myfind = Cells(i, 1).Value
Idvalue = Cells(i, 2).Value
Set c = Range("C:c").Find(Myfind, LookIn:=xlValues)
If Not c Is Nothing Then
firstaddress = c.Address
Do
c.Value = Idvalue
Set c = Range("c:c").FindNext(c)
Loop While Not c Is Nothing
End If
Next i
End With
End Sub