【问题标题】:Insert rows based on text in a cell and the cell below根据单元格中的文本和下面的单元格插入行
【发布时间】:2019-02-12 14:55:39
【问题描述】:

下面是一个 Excel 报告示例,显示了每个办事处的销售数据。 A 列列出了年份、周数和销售人员。如果某个特定的销售人员在该周没有销售,则该销售人员没有在该周列出 - 但我需要它。我想运行一个脚本,在没有列出销售人员的地方插入一行作为占位符。

   A          | B          | C
              |            |    
2018          | Date1      | Date2
              |            |    
Week 1        |            |
              |            |    
Garcia, J     | 89         | 72
Lesh, P       | 64         | 91
Total         | 153        | 163
              |            |    
Week 2        |            |
              |            |    
Anastasio, T  | 40         | 44
Garcia, J     | 62         | 58
Houser, M     | 28         | 32
Rhoads, R     | 437        | 658
Total         | 657        | 792 
              |            |    

但我需要列出所有销售人员。所以我需要它显示的是:

   A          | B          | C
              |            |
2018          | Date1      | Date2
              |            |    
Week 1        |            |
              |            |    
Anastasio, T  |            |    
Garcia, J     | 89         | 72
Houser, M     |            |    
Lesh, P       | 64         | 91
Rhoads, R     |            |    
Total         | 153        | 163
              |            |    
Week 2        |            |
              |            |    
Anastasio, T  | 40         | 44
Garcia, J     | 62         | 58
Houser, M     | 28         | 32
Lesh, P       |            |    
Rhoads, R     | 437        | 658
Total         | 657        | 792 

我是 VBA 的新手,所以我无法找到代码来检查 A 列和下面的单元格中的文本,如果 A 列中的文本是“Anastasio,T”并且下面单元格中的文本是“Garcia,J”,什么也不做, 否则在 'Anastasio, T' 下方插入行并在 'Anastasio, T' 下方的单元格中输入 'Garcia, J' 并继续为列表中的每个销售人员提供任何建议。非常感谢。

【问题讨论】:

  • 报告的运行情况如何?您可以发布您已经使用的代码吗?我怀疑您可以稍微修改它以获得您正在寻找的结果。
  • 我收到的报告只是我们 FP&A 小组的粘贴值 Excel 报告。我想获取如上所示的报告并创建一个新报告。我还没有任何代码,因为我不确定要使用什么代码。谢谢。
  • 1.你会得到一个列出销售人员的文件。 2. 你想要一个宏/VBA 脚本来插入缺少的人,因为他们没有任何销售。这是可能的并且不太难,需要所有销售人员的列表来比较文件中的列表。但是,这不是一个免费的编码网站,当您遇到问题或代码遇到问题时,我们将尽最大努力帮助您。你已经到达了不知道任何 VBA 的墙。我推荐一个初学者在线 VBA 指南。如果这听起来很粗鲁,请原谅我,我的意图是为未来的 VBA 用户提供全心全意的答案。

标签: excel vba


【解决方案1】:

解决此问题的一种方法是为列出的每个销售人员创建自己的模板报告,然后编写一个 VBA 脚本:

  1. 将模板复制到新工作表
  2. 在最新的销售报告中查找每个销售人员的姓名
  3. 将他们的数据复制到新工作表(如果此人没有销售,这将有效地留下一个空白行)

您的第一步是创建模板,然后使用 Excel 中的宏录制功能,或者对“For Each”和“If”循环进行一些研究。这应该可以帮助您入门:

Sub salesChecker()

Dim templatePerson As Range
Dim templateSalespeople As Range   ' Set up a range covering all names on the template
Dim reportSalespeople As Range     ' Set up a range covering all names on the report
Dim reportPerson As Range


' Set where these ranges apply
Set templateSalespeople = ThisWorkbook.Worksheets(1).Range("A2:A20")  'Example only: you'll need to set ranges
Set reportSalespeople = ThisWorkbook.Worksheets(2).Range("A2:A20")    'Example only: you'll need to set ranges


' Loop though each person on the template
For Each templatePerson In templateSalespeople

    ' Check name against each person on the report
    For Each reportPerson In reportSalespeople

        ' If the names match then...
        If reportPerson.Value = templatePerson.Value Then

            ' Copy the value in the cell next to the person's name and paste into template
            reportPerson.Offset(0, 1).Copy Destination:=templatePerson.Offset(0, 1)

        End If

Next

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    相关资源
    最近更新 更多