Excel 2010 VBA 或公式根据条目在动态列中查找值(类似 vlookup),但复制该值并将其粘贴到单元格中

Excel 2010 VBA 或公式根据条目在动态列中查找值(类似 vlookup),但复制该值并将其粘贴到单元格中

我的问题相当复杂,所以我会尽量举例说明,尽量说清楚。在一个表中,我有一些根据公式填充的值:

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 列,但当然将其更改为您的。

希望这至少能帮助你入门。

相关内容