Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果列位于不同的工作表中,如何更改代码_Excel_Vba - Fatal编程技术网

Excel 如果列位于不同的工作表中,如何更改代码

Excel 如果列位于不同的工作表中,如何更改代码,excel,vba,Excel,Vba,更具体地说: -我有三个装满可乐、可乐和可乐的专栏 -如果可乐中的物品在E列中有匹配物品,则将G列中的匹配物品放在第二列B中 我的问题是: 上述代码正确,但所有列都在同一张表中。 如果A列在SHEET1中,E列和G列在SHEET2中,如何更改代码?只需将SheetsSheetName添加到范围之前,并将“lastRowcolA”替换为将查找最后一行的代码即可。例如: Sub Button2_Click() 'COMPARE colA and colE - if colA=c

更具体地说: -我有三个装满可乐、可乐和可乐的专栏 -如果可乐中的物品在E列中有匹配物品,则将G列中的匹配物品放在第二列B中

我的问题是: 上述代码正确,但所有列都在同一张表中。
如果A列在SHEET1中,E列和G列在SHEET2中,如何更改代码?

只需将SheetsSheetName添加到范围之前,并将“lastRowcolA”替换为将查找最后一行的代码即可。例如:

     Sub Button2_Click() 
     'COMPARE colA and colE - if colA=colE, put colG matched to colE
     Dim rngcolE As Range, rngcolA As Range, rngFound As Range, rngSearch As Range

    Set rngcolA = Range("A2:A" & lastRowcolA)
    Set rngcolE = Range("E2:E" & lastRowcolE)

    'searches for all articlesA in column A mentioned in rngcolA:
    For Each rngSearch In rngcolA
     'all articleE are searched in rngcolE:

    Set rngFound = rngcolE.Find(What:=rngSearch, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

    'if articleE is found:
     If Not rngFound Is Nothing Then
       'found articlesG's cells are entered in column B, against his name given in column A:

    ngSearch.Offset(0, 1) = rngFound.Offset(0, 2)
    End If

    Next

    End Sub 
请注意,除了当前正在查看的工作表外,您不能对其他工作表使用Select功能,但其他功能应该可以正常工作。

是。我知道用户2696883。我没有复制整个代码。然而,这里是第一部分:

Set rngcolA = Sheets("Sheet1").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)    
Set rngcolE = Sheets("Sheet2").Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row))

它不能正常工作。我的意思是,rngSearch.Offset0,1=rngFound.Offset0,2不起作用。如果您试图将rngSearch.Offset0,1设置为rngFound.Offset0,2中包含的值,那么您应该将其编码为rngSearch.Offset0,1=rngFound.Offset0,2。值不起作用,因为您需要设置范围。既然您将变量声明为范围,那么就不能只=它们。那么这解决了您的查询,答案可以接受了吗?或者你仍然不确定我能澄清什么吗?Noldor130884,我应该怎么做而不是=?
     Dim ws As Worksheet
     Dim lastRowcolA As Long
     Dim lastRowcolE As Long
     Set ws = thisWorkbook.Sheets("Sheet1")

     With ws
          lastRowcolA= .Range("A" & .Rows.Count).End(xlUp).Row
          lastRowcolE = .Range("E" & .Rows.Count).End(xlUp).Row
     End With