VBA for Excel可以基于连续行中的文本插入行

时间:2019-02-01 20:48:34

标签: excel vba

我收到一个Excel报告,其中显示了基于付款人类型的中心患者数。 A列列出了中心名称和付款人类型。如果没有特定付款人类型的患者,则该付款人未在列表中列出。我想运行一个脚本以在未列出付款人的地方插入一行作为占位符。例如,这是在报告的输出:

   A       |    B     |     C
           |          |
Region A   | Date1    | Date2
           |          |
Center 123 |          |
           |          |
Private    | 4        | 6
Medicaid   | 60       | 58
Total      | 64       | 64
           |          |
Center 456 |          | 
           |          |
Private    | 4        | 4
Medicare   | 6        | 8
Hospice    | 2        | 2
Managed Cr | 8        | 10
Total      | 20       | 24

但是我需要为每个中心列出所有付款人/总计行:

Center 123

Private
Medicare
Medicaid
Medicaid Pnd
Veterans
Hospice
Assisted Lv
Managed Cr
Unassigned
Total
Bed Hold
Total with Bed Holds

例如,如果“ Medicare”不在下一行中,那么可以用VBA来在“私人”之后插入一行,然后在新行中放入“ Medicare”(列A)吗?如果“ Medicaid”不在下一行,然后在“ Medicare”之后插入一行-并将“ Medicaid”放在新行中,依此类推。谢谢你提前为你能提供任何帮助。

2 个答案:

答案 0 :(得分:0)

快速提问。您的标题是VBScript中,但你的标签是Excel的VBA。不知道你是否知道他们是两个不同的东西。

如果你想找一个VBA解决方案,也被称为宏,这里是一个想法。

如果您这样做是为了美观,请将使用的范围转换为表格,并隐藏没有任何值的行。无需宏即可完成此操作。但这里有一个快速的宏例如:

Sub Button1_Click()
    Dim objTable As ListObject
    Worksheets("Sheet1").Activate
    ActiveSheet.UsedRange.Select
    Set objTable = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, Criteria1:= _
    "<>"
End Sub

如果您正在寻找vbscript解决方案,它的语法相似,但是语法不同。

和一张纸条,你可以在“录制宏”在Excel中。这将允许你手动执行任务,和Excel会给你的动作宏版本。它并不是完美的,但像这样的东西,它会给你一个良好的开端。

答案 1 :(得分:0)

是的,这可以通过VBA轻松完成。这些是您需要采取的逻辑步骤:

遍历每一行; 每行; 检查A列中的文本和下面的单元格中的文本; 如果不需要采取任何措施,则不执行任何操作,然后转到下一行; 如果需要采取措施,则执行所需的措施;

您可以使用到目前为止的代码来更新您的问题,并详细描述您的确切位置,我很确定我们将为您提供帮助。请先在Google上搜索特定问题,然后再在此处提问。