Excel 基于动态值从偏移行复制相邻单元格

Excel 基于动态值从偏移行复制相邻单元格,excel,vba,Excel,Vba,我之前也发过类似的帖子,以为我有,于是删除了我的帖子。啊。因此,以下是我试图实现的目标: 如果变量等于c=d(比较两个循环),则在工作表上找到正确的d值位置(列/行) 将单元格中的d值复制到另一张纸上的指定范围内。结束(xlup)。偏移量(1,0)--这可以正常工作 将相邻单元格值从d值复制几行(偏移量0,-16) 我无法正确获取偏移值。它给了我范围1 R3的值 建议 例如: Set range1 = wbk1.Worksheets(1).Range(R3:R20) Set range2 =

我之前也发过类似的帖子,以为我有,于是删除了我的帖子。啊。因此,以下是我试图实现的目标:

  • 如果变量等于c=d(比较两个循环),则在工作表上找到正确的d值位置(列/行)
  • 将单元格中的d值复制到另一张纸上的指定范围内。结束(xlup)。偏移量(1,0)--这可以正常工作
  • 将相邻单元格值从d值复制几行(偏移量0,-16)
我无法正确获取偏移值。它给了我范围1 R3的值

建议

例如:

Set range1 = wbk1.Worksheets(1).Range(R3:R20)
Set range2 = wbk2.worksheets(2).Range("N" & .Rows.Count).End(xlup).Offset(1,0)
Set range3 = wbk2.worksheets(2).Range("O" & .Rows.Count).End(xlup).Offset(1,0)
Set range4 = range1.Offset(0,-16)
For Each c in g.keys
     For Each d in range1 
          If c = d Then 
               range2.Value = d  
               range3.value = range4.value  (this isn't working)
          End If
     Next d
Next c
最终代码:

Set rngchassIP = wbkJackPot.Worksheets(1).Range("R3:R30") 
Set rngchassCS = wbkVer.Worksheets("Cutsheets").Range("M2:M5")
Set rngchassyver = wbkVer.Worksheets("Cutsheets").Range("N" & .Rows.Count).End(xlUp).Offset(1, 0)
Set rngchassypst = wbkVer.Worksheets("Cutsheets").Range("O" & .Rows.Count).End(xlUp).Offset(1, 0)


For Each c In rngchassCS               
    For Each w In rngchassIP           
        If c = w Then                   
            rngchassyver.Value = w      
            rngchassypst.Value = w.Offset(0, -16)
        End If
    Next w
Next c

问题的根源在于,一旦确定了w的值/位置,我需要从该单元格中获取偏移量(0,-16),并将其放在“O”中。我试过几种不同的方法,但我就是看不到。。。啊。救命啊

猜猜你在这里想做什么

Set range1 = wbk1.Worksheets(1).Range("R3:R20")

'are range 2 and 3 on the same row?
Set range2 = wbk2.worksheets(2).Range("N" & .Rows.Count).End(xlup).Offset(1,0)
Set range3 = wbk2.worksheets(2).Range("O" & .Rows.Count).End(xlup).Offset(1,0)

For Each c in g.keys
     For Each d in range1.Cells 
          If c = d Then 
               range2.Value = d  
               range3.value = d.Offset(0,-16)
               'What now?  Once one match has been found,
               '  any later matches will write to the same cells...
          End If
     Next d
Next c

我很困惑,你在问题中提到“A”和“B”,但在代码中两者都没有。“A”是否与
c
相同,“B”是否与
d
相同?另外,什么是
g
?+1到上面的注释:下面的一段代码
Set range1=thiswook.Sheets(1).Range(“R1:R20”)Set range4=range1.Offset(0,-16)Set range3=thiswook.Sheets(1).Range(“A2”)range3.Value=range4.Value
工作正常,因此请提供更多相关的代码示例。修复了变量。g、 键指的是文件系统对象;只要说变量最终是相等的就足够了。彼得说这是可行的,所以我在进一步挖掘。稍后将再次发布。Range4是一个多单元格范围,您将其分配给一个单元格。尝试只指定d.offset(0,-16)的值instead@Mike准确地说,我将在我的工作簿上尝试上面的4行代码,它只是将预期值复制到
range3
单元格。正是这样。我需要做d对象的偏移。:)谢谢蒂姆!!!!你的帖子让我对它有了不同的看法,我意识到我实际上已经尝试过了,但是我让变量在偏移量上发生了翻转,所以它不能正常工作。再次感谢!