首页 > 解决方案 > 如何在一列中查找文本值并将值复制/填充到新列,直到找到第二个值,然后使用 vba 重复新值

问题描述

我有一个多页报告,其中包含每页顶部的员工姓名。我想创建一个宏来复制他们每天销售的名称。每个员工的天数可能会有所不同,因此我需要能够确定他们在报告中的天数范围,并为每一行复制他们的姓名。

在此示例中,我需要在从 4/1 到 4/5 的每一行中复制 Johns 的姓名,Debbie 的姓名表示她有销售的日子,Mary 的姓名表示她有销售的日子。

我怎样才能做到这一点?

助理每周销售

        Sales for   John

日期 销售额 美元
4/1/2019 100
4/2/2019 350
4/3/2019 200
4/4/2019 400
4/5/2019 500

        Sales for   Debbie

日期 销售额 美元
2019 年 4 月 1 日 250
2019 年 4 月 3 日 450
2019 年 4 月 5 日 275

        Sales for   Mary

日期 销售额 美元
2019 年 4 月 1 日 600
2019 年 4 月 2 日 450
2019 年 4 月 3 日 550
2019 年 4 月 4 日 700

标签: excelvba

解决方案


插入新列 B,然后在数据的持续时间内使用此公式,最后将公式恢复为其返回值。

=IF(A2="", "", INDEX(E:E, MATCH("zzz", E$1:E2)))

代码:

Option Explicit

Sub formatTXTfile()

    With Worksheets("sheet1")

        'create new second column
        .Range("B:B").EntireColumn.Insert

        'reference data area
        With .Range(.Cells(2, "B"), .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 1))

            'populate with dynamic lookup formula
            .Formula = "=if(A2="""", """", index(E:E, match(""zzz"", E$1:E2)))"
            'revert the formulas to the formulas' results
            .Value = .Value

        End With

    End With

End Sub

推荐阅读