![Excel 2010 VBA 或公式根据条目在动态列中查找值(类似 vlookup),但复制该值并将其粘贴到单元格中](https://linux22.com/image/1425263/Excel%202010%20VBA%20%E6%88%96%E5%85%AC%E5%BC%8F%E6%A0%B9%E6%8D%AE%E6%9D%A1%E7%9B%AE%E5%9C%A8%E5%8A%A8%E6%80%81%E5%88%97%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%80%BC%EF%BC%88%E7%B1%BB%E4%BC%BC%20vlookup%EF%BC%89%EF%BC%8C%E4%BD%86%E5%A4%8D%E5%88%B6%E8%AF%A5%E5%80%BC%E5%B9%B6%E5%B0%86%E5%85%B6%E7%B2%98%E8%B4%B4%E5%88%B0%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD.png)
我的问题相当复杂,所以我会尽量举例说明,尽量说清楚。在一个表中,我有一些根据公式填充的值:
Name Timestamp Datedif1
123 1-Oct 1 (date dif between today and timestamp, formula based)
在另一个表中,我希望能够输入名称并填充第一个表中的一些信息:
Name Timestamp Datedif1 Datedif2
123 2-Oct 1 0
Datedif1
从第一个表中提取,Datedif2
作为新的时间戳(输入到第二个表和当前日期)。
问题是,我希望能够在复制完第一个表后删除该行Datedif1
。
本质上,我想VLOOKUP()
根据名称做一个,来获取Datedif1
,但将的值粘贴Datedif1
到单元格中,而不是不断寻找名称并依靠第一个表来保持填充信息。
我非常确定我需要 VBA 代码来执行此操作,因为公式始终依赖于指向单元格,而我不知道在不引用其他单元格的情况下复制和粘贴静态值的公式。我不熟悉 VBA 代码,但很久以前就编写过 C 语言程序。
感谢 Eric F 的开场。我想我需要再明确一点我的愿望活动。我想要做的是,一旦我在表 2 中手动输入名称,Datedif1 值将从表 1 中复制并粘贴为一个值。理论看起来是这样的:如果 Name = "", "" 如果 Name = 123,VLOOKUP(123, 表 1, 返回 datedif1(列 3), FALSE) 将 vlookup 粘贴为一个值,这样如果表 1 被删除,它就不会改变
谢谢。
答案1
我做了一个示例,应该可以帮助您。数据不同,但希望您可以按照它来制作自己的宏。我和您一样有两张表。Sheet1 包含我的初始数据。Sheet2 将是我的过滤数据。
Public Sub do_stuff_and_things()
Dim i As Integer
Dim insertrow As Integer
i = 1
Do Until i = Range("'Sheet1'!A1").End(xlDown).Row + 1
If Range("'Sheet1'!A" & i).Value = "Joe" Then
If Range("'Sheet1'!B" & i).Value = "2" Then
'conditions are true so copy to next sheet
insertrow = Range("'Sheet2'!A1").End(xlDown).Row + 1
Range("'Sheet2'!A" & insertrow & ":D" & insertrow).Value = Range("'Sheet1'!A" & i & ":D" & i).Value
End If
End If
i = i + 1
Loop
End Sub
运行宏后,它将使用我在 IF 语句中指定的条件遍历 Sheet1。如果条件为真,则它将继续将整行复制到 Sheet2 上的下一个空白行。我指定行是 A 到 D 列,但当然将其更改为您的。
希望这至少能帮助你入门。