我在不同的工作簿中有两个工作表。每张纸只能有几行到几千行。他们从来没有相同数量的线。
在Capital工作表的E栏中,我想查找包含ITS ####的所有单元格,其中####是数字字符。识别出一个单元格后,我想转到该行的A列并识别该值。然后,我想在Trans工作表的第J列中找到我刚刚识别的值(列A),该列位于不同的工作簿中。如果找到匹配项,我希望将Trans工作簿中第I列的值更改为“已售货/费用的成本。
我已经在互联网上搜索了几个星期,并尝试过许多不同的解决方案来解决类似的问题,但没有发现任何有效的方法。我相信如果有人能让我超过指定的线路,我可以弄明白。我一直在
运行时错误1004方法对象_worksheet的范围失败。
以下代码是我正在处理的代码,但我只是想要克服错误,所以它甚至都没有尝试解决整个问题。
感谢您提供的任何帮助。
Sub ITSTRANSCOM()
'
' ITSTRANSCOM Macro
'
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Variant
Dim C As Variant
Dim Lrow As Variant
Dim Lastrow As Variant
Set ws1 = Worksheets("Capital")
Set ws2 = Worksheets("Trans")
Lrow = ws1.Cells(ws1.Rows.Count, "A:A").End(xlUp).Row
Lastrow = ws2.Cells(ws2.Rows.Count, "j:j").End(xlUp).Row
'Run-time error occurs on next row.
For Each i In ws1.Range("A:A", Lrow)
For Each C In ws2.Range("J:J", Lastrow)
If i.Cells.Value = C.Cells.Value Then
If C.Cells.Value = "ITS####" Then
i.Cells.Interior.ColorIndex = xlNone
End If
End If
Next C
Next i
End Sub
答案 0 :(得分:0)
您的解决方案看起来就像在那里...只是尝试更换线路:
If C.Cells.Value = "ITS####" Then
使用以下行:
If UCase(Left(C.Cells.Value,3)) = "ITS" Then
我认为这样可以识别您想要的单元格,您似乎应该能够开发代码以在工作表之间移动这些值(基于您的其他代码)。
答案 1 :(得分:0)
尝试更改
For Each i In ws1.Range("A:A", Lrow)
到
For Each i In ws1.Range("A1", "A" & Lrow)
与For Each C In ws2.Range("J:J", Lastrow)
相同:
For Each C In ws2.Range("J1", "J" & Lastrow)
答案 2 :(得分:0)
尝试这样的事情:
Dim I as Integer, C as Integer
Dim Tmp_Val as Variant
For I = 1 to LRow
If Left(UCase(Ws1.Range(“E” & I).Value),3) = “ITS” then
Tmp_Val = Ws1.Range(“A” & I).Value
For C = 1 to LastRow
If Ws2.Range(“J” & C).Value = Tmp_Val then
Ws2.Range(“I” & C).Value = “Cost of Goods Sold/Expense”
Exit For
End if
Next C
End if
Next I
答案 3 :(得分:0)
看起来很简单。也许我没有得到你的解释吗?
Dim c As Range, r As Range
For Each c In ws1.Range("A:A").SpecialCells(xlCellTypeConstants, xlTextValues).Cells
If c.Value Like "ITS[0-9][0-9][0-9][0-9]" Then
Set r = ws2.Range("J:J").Find(c.Value)
If Not r Is Nothing Then
r.Offset(0, -1) = "Cost of Goods Sold/Expense"
Else
Debug.Print c.Value, " not found"
End If
End If
Next c
Debug.Print "Done"