【发布时间】:2017-05-21 17:20:56
【问题描述】:
我是 VBA Excel 新手。
注意:
我已经为 2 个单独的工作表编写了这个程序,但我最初有 2 个单独的工作簿,我希望为 2 个单独的工作簿编写代码。
问题:
在 工作簿 1,工作表名称 (AM_quote-overview_sales-inputs) 我有 2 列。 A 列包含主题信息,B 列中包含与该信息相关的数据。
在 Workbook 2 中,我有 A 列 包含主题信息单词,其中一些类似于我在 AM_quote-overview_sales-inputs 表中的内容,而有些则不是,并且在列中B. 我需要在匹配时从工作簿 1 表 (AM_quote-overview_sales-inputs) 的 B 列复制值。
我想要 Workbook 2 (Sheet 1) 中的宏,它将 A 列中的主题信息的值与 Workbook 1 Sheet (AM_quote-overview_sales-inputs) 中 A 列中的主题信息的值进行比较然后将工作簿 1 工作表 (AM_quote-overview_sales-inputs) 的 B 列中的值复制到工作簿 2 (工作表 1) 的 B 列。
我的书面代码比较了单词,但是当我在工作簿 2 的工作表 1 中添加新行时,从工作簿 1 的 B 列复制到工作簿 2 的 B 列的值不准确。
我需要比较 2 列并将工作簿 1 工作表 (AM_quote-overview_sales-inputs) 的 B 列的值复制到工作簿 2 (Sheet1) 的 B 列,以获取两个工作表的 A 列中比较或匹配的单词。
查看下图了解详细信息。
代码:
Private Sub CommandButton1_Click()
Dim oldRow As Integer
Dim newRow As Integer
Dim i As Integer
i = 1
For oldRow = 1 To 1170
For newRow = 1 To 1170
If StrComp((Worksheets("AM_quote-overview_sales-inputs").Cells(oldRow, 1).Text), (Worksheets("Sheet1").Cells(newRow, 1).Text), vbTextCompare) <> 0 Then
i = oldRow
Worksheets("Sheet1").Cells(i, 2) = " "
Else
Worksheets("Sheet1").Cells(i, 2) = Worksheets("AM_quote-overview_sales-inputs").Cells(newRow, 2)
i = i + 1
Exit For
End If
Next newRow
Next oldRow
End Sub
1 WorkBook 1 Sheet (AM_quote-overview_sales-inputs) 数据
2 工作簿 2(表 1)数据
例子:
Workbook 1 Sheet AQR Data WorkBook 2 Sheet 1
Col A Col B Col A Col B
Ford 3 BMW
BMW 4 Ford
Jaguar 5 Rolls Royce
Rolls Royce 6 Jaguar
我在工作簿中有 2 列。
我需要一个工作簿 2 Sheet 1 中的宏,它将从 A 列 中提取诸如 BMW 等值,并匹配 A 列中存在的这些值Workbook 1 Sheet AQR 和与之匹配的单词将 Workbook 1 的 B 列 中的 3、4 等单词的值复制到 Workbook 2 的 B 列在Words前面。
在 BMW 前面,我需要像 4 这样的值,所以在匹配单词后,我需要在 Workbook 2 的 Col B 中使用 4。
【问题讨论】:
-
任何帮助将不胜感激,因为我被卡住了。感谢您的期待。
-
准确地说:您是否需要将数据从一个工作簿映射到另一个工作簿的“vlookup”解决方案?还有两个问题:如果特定行不在第二个文件中,是否应该在最后添加?
-
“从工作簿 1 的 B 列复制到工作簿 2 的 B 列的值不准确”到底是什么意思?举一个你的代码失败的例子
-
@Rufus 非常感谢您的回复和提问。我已根据您提出的问题和示例更新了我的 Qurey,希望我仍然能够向您解释我的问题。
-
@user3598756 非常感谢您的回复。请根据您提出的问题以示例查看更新的问题。我希望我仍然能够向你解释。感谢期待。