2

我有一个包含数千个条目的 Excel 表,如下表 A 所示。现在,由于一些需求变化,我想为每个“名称”添加 3 个额外的“标签”,如表 B 所示。例如,名称 n1 将具有标签 t1、t2、t3 和 t4,并且对应于每个标签,有将是一个单独的评论。(A) 实现此目的的一种方法是在每列中添加三个新行(可以有 3 个空白行) (B) 另一种方法是在同一个文件中对应于每个标签再添加 3 个工作表。(C) 第三种方法可能是为 Tag 列设置一些过滤器......

有人可以建议一种自动化上述(A)的方法吗?(将不胜感激宏代码)如果有人可以共享代码来做(C)..或任何优雅的问题解决方案,那就更好了。谢谢!

表A

Name id Tag     Comment
n1    1  t1    my t1 comment for id 1
n2    2  t1    my t1 comment for id 2
n3    3  t1    my t1 comment for id 3
n4    4  t1    my t1 comment for id 4
n5    5  t1    my t1 comment for id 5

表 B

Name  id  Tag         Comment
n1    1   t1        my t1 comment for id 1*
n1    1   t2        my t2 comment for id 1
n1    1   t3        my t3 comment for id 1
n1    1   t4        my t4 comment for id 1
n2    2   t1        my t1 comment for id 2
n3    3   t1        my t1 comment for id 3
n4    4   t1        my t1 comment for id 4
n5    5   t1        my t1 comment for id 5
4

1 回答 1

0

在您的桌子上测试了此代码,它应该可以工作

Sub NewRows()

Dim i As Long
Dim k As Long
Dim lastRow As Long
Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Sheets("test")
lastRow = Range("B" & Rows.Count).End(xlUp).Row ' I assume that your unique ID's are in column B

For i = lastRow To 2 Step -1 '3 is the first row where you have data
    For k = 4 To 2 Step -1 'Amount of new lines you want to insert
          ws.Rows(i + 1).Insert shift:=xlShiftDown ' insert row
          ws.Range("A" & i + 1).Value = ws.Range("A" & i).Value 'copy value in column A from original entry
          ws.Range("b" & i + 1).Value = ws.Range("b" & i).Value 'copy value in column A from original entry
          ws.Range("C" & i + 1).Value = "T" & k 'update tag info for each new line
          ws.Range("d" & i + 1).Value = "this is " & ws.Range("C" & i + 1).Value & " comment for " & ws.Range("A" & i + 1).Value

    Next k
Next i


End Sub

我不确定你如何用评论填充 D 列,但同样的原则也适用。

于 2015-09-21T18:59:29.900 回答