在检查列中是否存在单元格值之后,我需要获取匹配单元格旁边的单元格的值.例如,我检查是否cell A1存在值column B,并假设它匹配B5,然后我想要值cell C5.
要解决问题的前半部分,我这样做了......
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")
......而且它奏效了.然后,由于早先对SO的回答,我还能够获得匹配单元格的行号:
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))
很自然地,为了获得下一个细胞的价值,我试着......
=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))
......它不起作用.
我错过了什么?如何将列号附加到返回的行号以获得所需的结果?
在我的代码中,我声明了这些变量:
Dim Field_Name, Datatype, row As Integer
然后,在For循环中,我有这个代码:
Field_Name = Worksheets(i).UsedRange.Find("Field Name").Column
Datatype = Worksheets(i).UsedRange.Find("Datatype").Column
row = Worksheets(i).UsedRange.Find("Field Name").row + 1
但是,该代码抛出"对象变量或未设置块变量"运行时错误.根据API,Range.Column和Range.row属性是只读的Long.我已经尝试将变量的数据类型设置为Long,但没有成功.看起来VBA期待我这样做
Set Field_Name = Worksheets(i).UsedRange.Find("Field Name").Column
Set Datatype = Worksheets(i).UsedRange.Find("Datatype").Column
Set row = Worksheets(i).UsedRange.Find("Field Name").row + 1
但是,所述变量不是对象,因此这样做会抛出"Object required"编译错误.
任何有关这方面的帮助将不胜感激.如果您不确定如何修复它,那么获取单元格的列号和行号的任何变通方法或替代方法都将非常感激.