0

我没有使用 VBA 的经验,但我在工作中被要求想出一个解决这个问题的方法。
我有一张表,其中包含如下数据:

名称 ..... 更改日期...... 01/01/13 ...... 01/02/13 ...... 01/03/13

乔............ 2013 年 2 月 5 日............迟到了

最高日期值是账单到期的日期,日期值 (1/05/13) 是账单更改的日期。我需要搜索每个日期列(1/1-1/3),如果找到“迟到”一词,我需要将更改的名称和日期以及到期日期复制并粘贴到另一个工作表中。在此示例中,我将复制值:

乔…………02/05/13…………01/01/13

进入另一张纸。我将不胜感激提供的任何帮助。

4

2 回答 2

3

您不需要为此使用 VBA。使用 INDEX 和 MATCH 函数查找 Late 落在哪里。

稍后您可以过滤以仅显示在 1/1-1/3 列中延迟的行。

适应你认为合适的,但这是基本的想法。

在“更改日期”和 2013 年 1 月 1 日之间插入一列,并将其命名为“到期日期”(现在是 c 列)。

如果单元格 C2,请输入=IFERROR(INDEX($D$1:$F2,1,MATCH("Late",$D2:$F2,0)),"")

拖放到 C 列

这就是它应该的样子

于 2013-07-09T16:11:49.997 回答
0

试试这个......这会在“C”列中搜索“Late”这个词,如果它在那里,它会复制整行并将其粘贴到一个新的工作表中,它将循环搜索你拥有的所有数据并粘贴所有行在新工作表的后期。它不能完全满足您的需求,但它是一个很好的起点。

Dim j As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("sheet2")

For j = 2 To ws1.Range("C65536").End(xlUp).row
    If ws1.Cells(j, 2) = "late" Then ws1.Rows(j).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).row + 1)
Next j
于 2013-07-09T16:10:40.790 回答