【发布时间】:2018-03-27 21:37:07
【问题描述】:
编写此代码是为了执行以下操作:
从列表 (ASIN) 中获取唯一标识符,并从单独的工作表中获取唯一关键字,并在第三个工作表中找到这两个标识符的交集
代码需要遍历每个 ASIN 的所有关键字。如果“if 语句”为 TRUE,则关键字将被添加到将通过循环连接的列表(“结果”)中。一旦内部循环完成,它将添加到一个单元格,然后移动到下一个 ASIN,循环通过相同的关键字列表。
运行时,我收到运行时错误“13”类型不匹配。但是,我不确定不匹配在哪里。
ASIN 是字符串;关键字是字符串。
感谢任何帮助!
Sub Search_Terms()
Dim asin_rng As Range
Dim keyword_rng As Range
Dim contentcolnum As Variant
Dim contentrownum As Variant
Dim keywordrownum As Variant
Dim productrownum As Variant
Dim sheetName As String
Dim result As String
Set asin_rng = Worksheets("Background Search Term Analysis").Range("B2:B253")
Set keyword_rng = Worksheets("Keyword Categorization").Range("A3:A159")
For Each i In asin_rng
contentrownum = Application.Match(i, Worksheets("Current Content Analysis").Range("B1:B256"), 0)
productrownum = Application.Match(i, Worksheets("Product Categorization").Range("A1:A159"), 0)
result = ""
For Each j In keyword_rng
contentcolnum = Application.Match(j, Worksheets("Current Content Analysis").Range("A2:FL2"), 0)
keywordrownum = Application.Match(j, Worksheets("Keyword Categorization").Range("A1:A159"), 0)
'if this product doesn't currently have the keyword in it then
If Worksheets("Current Content Analysis").Cells(contentrownum, contentcolnum) = "FALSE" Then
'if the keyword and product tagging matches add it to result
If Worksheets("Keyword Categorization").Cells(keywordrownum, 2) = Worksheets("Product Categorization").Cells(productrownum, 3) And Worksheets("Keyword Categorization").Cells(keywordrownum, 3) = Worksheets("Product Categorization").Cells(productrownum, 4) And Worksheets("Keyword Categorization").Cells(keywordrownum, 4) = Worksheets("Product Categorization").Cells(productrownum, 5) Then
result = result & "," & Worksheets("Keyword Categorization").Cells(keywordrownum, 1)
End If
End If
Next j
'once i go through all of my keywords, set ASIN background search term cell value equal to result
Worksheets("Background Search Term analysis").Cells(productrownum, 4).Value = result
Next i
End Sub
我能够创建一个解决方案,并简化一些代码。感谢您的帮助!
Sub Search_Terms()
Dim asin_rng As Range
Dim keyword_rng As Range
Dim contentcolnum As Variant
Dim contentrownum As Variant
Dim keywordrownum As Variant
Dim productrownum As Variant
Dim sheetName As String
Dim result As String
'Set asin_rng = Worksheets("Background Search Term Analysis").Range("B5:B255").Cells
'Set keyword_rng = Worksheets("Keyword Categorization").Range("A4:A159").Cells
For Each i In Worksheets("Background Search Term Analysis").Range("B5:B255").Cells
contentrownum = Application.Match(i, Worksheets("Current Content Analysis").Range("B1:B256").Cells, 0)
productrownum = Application.Match(i, Worksheets("Product Categorization").Range("A1:A255").Cells, 0)
For Each j In Worksheets("Keyword Categorization").Range("A4:A159").Cells
contentcolnum = Application.Match(j, Worksheets("Current Content Analysis").Range("A2:FL2").Cells, 0)
keywordrownum = Application.Match(j, Worksheets("Keyword Categorization").Range("A1:A159").Cells, 0)
'if this product doesn't currently have the keyword in it then
If Worksheets("Current Content Analysis").Cells(contentrownum, contentcolnum) = False And Worksheets("Keyword Categorization").Cells(keywordrownum, 2) = Worksheets("Product Categorization").Cells(productrownum, 3) And Worksheets("Keyword Categorization").Cells(keywordrownum, 3) = Worksheets("Product Categorization").Cells(productrownum, 4) And Worksheets("Keyword Categorization").Cells(keywordrownum, 4) = Worksheets("Product Categorization").Cells(productrownum, 5) Then
result = result & "," & Worksheets("Keyword Categorization").Cells(keywordrownum, 1)
End If
Next j
'once i go through all of my keywords, set ASIN background search term cell value equal to result
Worksheets("Background Search Term Analysis").Cells(contentrownum, 4).Value = result
result = ""
Next i
结束子
【问题讨论】:
-
你是什么意思'我不确定不匹配在哪里。'?进入 VBE 的工具、选项、常规,并将错误捕获设置为中断未处理的错误。
-
感谢您的帮助。我是 VBA 新手,在弄清楚如何有效调试时遇到了麻烦。谢谢!