不同工作表上的VBA VLookup单元格
我试图编写一个代码,检查两个不同工作表上的两个单元格是否相同。如果它们相同,则使用VLOOKUP查找这些单元格(位于不同列中)的赋值之间的差异 这是我到目前为止写的,我一直收到错误消息 对象不支持此属性或方法 也不知道为什么。有人能提供意见吗?谢谢不同工作表上的VBA VLookup单元格,vba,excel,Vba,Excel,我试图编写一个代码,检查两个不同工作表上的两个单元格是否相同。如果它们相同,则使用VLOOKUP查找这些单元格(位于不同列中)的赋值之间的差异 这是我到目前为止写的,我一直收到错误消息 对象不支持此属性或方法 也不知道为什么。有人能提供意见吗?谢谢 Sub testing() Product = Range("A2:A506") Set myrange = Worksheets("open_prices").Range("A2:D506") Set myrange2 = Worksheets(
Sub testing()
Product = Range("A2:A506")
Set myrange = Worksheets("open_prices").Range("A2:D506")
Set myrange2 = Worksheets("close_prices").Range("A2:B506")
Dim popen As Integer
Dim pclose As Integer
Dim ws As Worksheet
For Each Cell In Workbooks("TDO VBA Test.xlsx")
If Worksheets("open_prices").Range("A2:A506") = Worksheets("close_prices").Range("A2:A506") Then
popen = WorksheetFunction.VLookup(Product, myrange, 4, False)
pclose = WorksheetFunction.VLookup(Product, myrange2, 2, False)
result = popen - pclose
End If
Next Cell
End Sub
我猜这就是您要做的,即迭代一张表的A2:A506中的每个单元格,查看该值是否在另一张表中,如果是,则进行计算
Sub testing()
Dim popen As Integer
Dim pclose As Integer
Dim result As Integer ' Are you sure these are integers? Usually prices will be Double
Dim VLookupResult As Variant
Dim cel As Range
For Each cel In Worksheets("open_prices").Range("A2:A506").Cells
popen = cel.Offset(0, 3).Value
VLookupResult = Application.VLookup(cel.Value, Worksheets("close_prices").Range("A2:B506"), 2, False)
If Not IsError(VLookupResult) Then
pclose = VLookupResult
result = popen - pclose
' You will need to decide what to do with this "result" now
' that it has been calculated
End If
Next cel
End Sub
对于工作簿中的每个单元格(“TDO VBA Test.xlsx”),您打算用
做什么?因为我要比较的两个单元格位于同一工作表的不同工作表中workbook@jsotola失败的将是
的,我不确定工作簿
中的默认对象是什么,但是我怀疑它是否可以被迭代。@YowE3K你知道如果两个单元格相同,我如何比较两个单元格并执行减法吗?你是想只在“开盘价格”中的单元格(比如A56单元格)与“收盘价格”中的等价单元格(即A56单元格)相同的情况下执行减法,还是想先在其中找到位置相同值的“收盘价”(即可能在单元格A92中)然后进行计算?非常感谢!!如果我做得正确,我应该进行505次计算…我想做的是从所有计算中找出最大的结果…你知道我该怎么做吗?@maddie是的,从一个值设置为0的变量开始。每次计算结果
时,测试结果是否正确
大于它,如果大于,则将变量的值设置为结果
。循环完成后,该变量将包含遇到的结果
的最大值。如果尝试编码后该变量不起作用,请提出一个新问题,说明您尝试了什么。另请注意@maddie在合作前需要考虑的问题de it:(a)你是在追求最大的结果(即开盘和收盘之间价格跌幅最大)还是最小的结果(即价格涨幅最大)?(b)你是在追求最大/最小的绝对差异,还是最大/最小的百分比差异,即你想知道10减少了9比1,还是1011减少了10比1001?(c)您是想找出最大/最小的差异,还是有差异的项目?@YowE3K感谢您的帮助这是我编写的代码,我仍然得到相同的结果值,这不是最大值结果=((Vlookuppreslt-popen)/popen)*100 Dim x作为双x=0如果Abs(结果)>x Then x=如果下一个单元格我试图找到最大百分比差异(Abs值)以及存在差异的项目,则结果结束。我希望这是清楚的。再次感谢!@maddie请提出另一个问题-注释中的代码太难阅读。(我怀疑这只是将x=0
移动到循环之前的一种情况[看起来它在循环中],但如果这是它自己的问题,它将对未来的读者更有用。)