我有一个字符列表,每个字符都有一个数字
| Character | Count |
|-----------|-------|
| Sam | 2 |
| Jim | 4 |
| Larry | 1 |
| Bob | 2 |
理想情况下,我想这样列出他们
Sam 1
Sam 2
Jim 1
Jim 2
Jim 3
Jim 4
Larry
Bob 1
Bob 2
我想使用一个可以直接运行的excel公式来做到这一点。
感谢您的帮助!
答案 0 :(得分:0)
对我来说,VBA似乎更容易...在工作表中或功能区上单击一个按钮,然后只需单击一下即可,甚至不用运行公式。
答案 1 :(得分:0)
下面的代码将根据存在的次数创建名称列表,其名称的数量递增。 打开VBA屏幕,插入新模块并复制/粘贴代码。 正如您提到的,您不了解VBA,请注意,例如,使用Ctrl + Z不能撤消宏的 。运行后,结果将在那里。
Sub repeat_values()
Dim name_count, count, i, j, k As Double
name_count = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.count, "A").End(xlUp).Row
For i = 2 To name_count
count = Range("B" & i).Value '-->times to repeat the name
For k = 1 To count
j = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.count, "D").End(xlUp).Row '--> determines everytime the last row
Range("D" & j).Offset(1, 0) = Range("A" & i).Value '--> columns for the names, change "D" to the desired column if you wish
Range("E" & j).Offset(1, 0) = k '--> column for the counting, change the letter "E" if you would like to have it in the same column
Next k
Next i
End Sub
注意:它将始终从D列的第一个新的可用行继续,因此不会删除旧数据。当然可以添加。希望对您有所帮助。
答案 2 :(得分:0)
假设您的数据如上所述进行布局,请使用以下公式。根据需要调整范围。
列表的第一行是一种特殊情况,它充当列表的种子。
在A1中使用:
=F1
在B1中使用
1
这基本上是从列表中拉出第一个条目并为其分配最小编号。
为了构建列表并在向下复制公式时提取适当数量的名称,可以使用以下公式。我添加了“不再有字符”的自定义错误消息,但是可以通过改用“”将其更改为空白。
在A2中使用以下内容并复制下来:
=IFERROR(IF(VLOOKUP(A1,$F$2:$G$5,2,0)=B1,INDEX($F$2:$F$5,MATCH(A1,$F$2:$F$5,0)+1),A1),"no more characters")
我结合使用VLOOKUP和MATCH / INDEX为您提供了更多可以使用的公式。
在B2中,使用以下内容并复制下来。
=IF(A2="no more characters","",IF(A1=A2,B1+1,1))
如果您更改了错误消息,请在此公式中对其进行调整以匹配。