gpt4 book ai didi

vba - 需要循环遍历列范围的代码,检查是否存在多个值,然后复制单元格

转载 作者:行者123 更新时间:2023-12-04 20:40:43 24 4
gpt4 key购买 nike

我需要一些帮助来为 Excel 编写一些 VBA。我在另一个问题下发布了这个,但发现了一个相关的问题,如果稍微修改一下可能会有所帮助。我有一个带有两个工作表的工作簿。一个工作表称为 Master,另一个称为 Sheet2。这是主工作表的样子:

            A               B                  C
1 Company Name Company Interests Contact
2 Apple Inc Waterskiing
3 Grape Pty Bush walking
4 Pear Pty
5 Peach Pty Movies
6 Watermelon Pty Reading Books Bob Brown

这是 Sheet2 的样子:
          A                B                C 
1 Company Name Company Interests Contact
2 Apple Inc Waterskiing Bruce Kemp
3 Grape Pty Bush walking Steve Sampson
4 Pear Pty
5 Peach Pty Movies
6 Watermelon Pty Reading Books Bob Brown
7 Honey Pty Sports Luis White

我想要做的是遍历工作表Sheet2中的所有公司名称(A列)和公司利益,并检查主工作表中的公司名称(A列)和公司利益。

如果为这两个条件找到匹配项,则将 Sheet2 的联系人列(C 列)中包含的值复制到 Master 中的联系人列(C 列)以获取正确的行。

如果未找到匹配项,则将 Sheet2 中的整行复制到主工作表中的第一个空行。

之前发布此问题的人只需要公司名称匹配,并且用户为此提供了以下代码。我相信只需要添加一个额外的 For 循环来确保两个元素匹配,但我不确定如何做到这一点。任何帮助表示赞赏。

子比较()
Dim WS As Worksheet
Set WS = Sheets("Master")

Dim RowsMaster As Integer, Rows2 As Integer
RowsMaster = WS.Cells(1048576, 1).End(xlUp).Row
Rows2 = Worksheets(2).Cells(1048576, 1).End(xlUp).Row
' Get the number of used rows for each sheet

With Worksheets(2)
For i = 2 To Rows2
' Loop through Sheet 2
For j = 2 To RowsMaster
' Loop through the Master sheet
If .Cells(i, 1) = WS.Cells(j, 1) Then
' If a match is found:
WS.Cells(j, 3) = .Cells(i, 2)
' Copy in contact info
Exit For
' No point in continuing the search for that company
ElseIf j = RowsMaster Then
' If we got to the end of the Master sheet
' and haven't found a company match
RowsMaster = RowsMaster + 1
' Increment the number of rows
For k = 1 To 3 ' Change 3 to however many fields Sheet2 has
WS.Cells(RowsMaster, k) = .Cells(i, k)
' Copy the data from Sheet2 in on the bottom row of Master
Next
End If
Next j
Next i
End With

结束子

最佳答案

If .Cells(i, 1) = WS.Cells(j, 1) Then

应该改为
If .Cells(i, 1) = WS.Cells(j, 1) And .Cells(i, 2) = WS.Cells(j, 2) Then

表示我们正在检查 A 和 B 列以找到匹配项。

然后 WS.Cells(j, 3) = .Cells(i, 2)应改为 WS.Cells(j, 3) = .Cells(i, 3)填写 C 列的最后一条数据。

关于vba - 需要循环遍历列范围的代码,检查是否存在多个值,然后复制单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com