Excel中的分层自动编号

时间:2015-08-31 14:11:01

标签: excel

有没有办法在列" B"中获得自动编号?没有VBA的下图中给出的形式? (密度为" A"和" B"是任意的;唯一的规则是它可以是两个或多个A'连续',和" A"总是先行。)

A   
B   1
B   2
B   3
A   
B   1
B   2
A   
B   1
B   2
B   3

如果需要,可以使用一些辅助计算(列)。

P.S。任务的扩展名为here

2 个答案:

答案 0 :(得分:2)

嗨Garej:根据您提供的示例,您可以使用" IF-THEN" excel中的公式。只需将您的字母放在一个空白的Excel文档中,将公式粘贴到单元格B2中,您应该很好。你需要hardcode =" A"在公式中是什么" A"是。这是公式:

=IF(A2="A","",IF(A2=A1,B1+1,1))

如果您不想对=" A"进行硬编码,您也可以从以下位置更改开头:

  A2="A" 

 A2=$A$1

这将允许您拥有动态值,而不是" A"所以完整的代码将是....

 =IF(A2=$A$1,"",IF(A2=A1,B1+1,1))

此代码背后的逻辑如下: 看看当前行中的字母...... 如果当前行中的字母是" A" [或匹配$ a $ 1的内容],然后将数字留空。 如果当前行中的字母与上一行中的字母相同,则在上面的行中添加一个字母。 如果当前行中的字母与上面的行不同[并且不是" A"或$ A $ 1],然后从1开始。

Excel Solution

答案 1 :(得分:1)

将以下内容从单元格B2中开始(B1可以硬编码为1):

=IF(A2="A","",if(A1="A",1,B1+1))

这只是查看前一行 - 如果前一行中的A列表示" A",那么我们知道当前行是从1开始的新行。如果它不是" A"在上面的行中,我们知道这是当前计数的延续。它首先检查当前行 - 如果当前行是" A",我们知道我们希望这一行是空白的。