我有两个电子表格Sheet1和Sheet2。
Sheet2将粘贴从第三方那里收到的很多信息,并且在B列中具有唯一ID,我目前正在使用vlookup,但是电子表格越来越大,加载和保存需要很长时间
在工作表1中,我想使用宏将来自MACRO的vlookup结果插入匹配B列中的唯一ID,并显示Sheet2中c列的值。
希望这很有意义,谢谢!!
尝试了很多:
Sub UPDATE()
Dim s1 As Worksheet, s2 As Worksheet
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
v1 = s1.Range("A2")
v2 = s1.Range("B2")
s2.Activate
For Each r In Intersect(ActiveSheet.UsedRange, Range("B:B"))
If r.Value = v1 Then
r.Offset(0, 1).Value = v2
End If
Next
End Sub
答案 0 :(得分:0)
如果您可以在问题字段中发布非问题,那么我可以在答案字段中发布非回答吗?
您当前需要的帮助不是您的某种排序,但并不是真正需要的。您只是还不知道。
如果我停止判断您的意图,而忽略了您对真正有帮助的评论的侮辱性回应。如果我花时间和精力专注于您的问题,并从语义上将您的需求转化为一个问题。这样一来,您仍然无法获得所需的东西。
我会示范。
装有2张纸的大型工作簿会缓慢加载并保存。大概是因为它的大小和众多的vloookup函数。为了提高性能,您希望工作表1上的宏在工作表2上“从MACRO插入vlookup结果”。
这可能会让您感到惊讶。如果已经优化了一个公式,则用另一个公式替换它不会提高性能。即使该公式是vlookup,并且即使该vlookup由MACRO放置。实际上,它会变慢,因为您仍在计算vloookup,现在您已经添加了在工作表1和2上运行MACRO的开销,对我来说,好像可以通过更改您的性能来提高性能保存前进行计算的计算设置,打开时不刷新或计算。那不会节省您的时间,但是打开和使用文档应该更快。
这不是您没有要求的答案,但它很薄弱,实际上并没有做很多事情来扎根。我确实在尽力提供帮助,所以我不会停下来,我将继续研究您共享的代码,并专注于您认为问题所在的部分。哦,您没有说他们可能在哪里。没什么大不了的,这只是一个简短的步骤,而且我几乎具备VBA知识,我确信在不访问测试数据或您的运行时环境的情况下逐步解决错误代码时,我不会遇到任何问题。小菜一碟!
嗯...你想做什么?我想我明白你说的想要什么;但我看不出您实际上是如何做到的。我会与您给我的东西一起工作,但是所花的钱不多,希望您不要寄予厚望。
设置了工作表1和2。 2已激活,此子项开始使用;因此,这必须是工作表2宏。这如何与工作表1宏互动?您确定那个没有问题吗?
嗯,我已经阅读了一些有关交叉速度的信息。如果我没记错的话,它应该很快,那可能是个不错的选择。我必须记住这一点。嗯,B:B,整个专栏吗?您通常可以通过缩小约束条件来获得性能,但是在这种情况下我不确定。也许十字路口是紧接其后的每一行的短路,我应该调查一下。
我必须假设v1和v2是变体,因为它们没有被声明,并且没有给出有关选项显式变量或公共范围变量的信息。您必须小心变体,因为它们会改变类型并导致您整天抛出错误。特别是如果您的代码不够清晰以至于无法识别它们。案例和观点,您分配了两个等于范围的变体,这是故意的还是您忘记了单词集?再往下,您将范围的值分配给同一变体,让我来猜测您的意图。
您的数据是否使用字符串?如果是,那么value2应该比value快。
我对您的循环感到困惑,我不知道为什么要这么做或为什么要做什么。您说您已经将vlookup结果粘贴在B中-因此您阅读它很有意义。但是为什么要循环呢?您计算了有效范围,为什么不一步一步地将其写入数组而不是可能写入数百或数千?为什么要写到工作表2中的C列?我本来希望sheet1。
等等,就是这样吗?这就是您所有的代码吗?它们一定是别的东西,因为如果不像您的个人代码编写服务那样,我就无法从您所处的位置到达您想要的位置。
就这样。详细地。为您提供所需的真正尝试。我花了两个多小时提供援助,您现在离您的目标多近了?
可能不多。
毫无疑问,最有用的信息是使您最接近目标的信息,它是在第一条评论中提供给您的,对您的反应方式反映得很差。
从我的角度来看,您似乎还没有弄清楚自己需要知道的内容。我将从显式选项开始。然后在工作表之间传输数据。然后对数组使用范围。那应该使您到达可以实际帮助您的地步。那是3个主题,其中1个主题是20秒阅读时间。
祝你好运,并尝试失去态度。