Excel中的分层自动编号

有没有办法让自动编号在下面的模式给出的forms的列“B”没有VBA? (“A”和“B”的密度是任意的;唯一的规则是它可以是两个或多个A'连续',并且“A”总是先行)。

AB 1 B 2 B 3 AB 1 B 2 AB 1 B 2 B 3 

如果需要,一些辅助计算(列)是好的。

PS任务的扩展在这里 。

嗨Garej:根据你提供的例子,你可以用excel中的“IF-THEN”公式来实现这个function。 只要把你的信件放在一个空白的excel文件中,将公式粘贴到单元格B2中,你应该很好。 你需要在公式中的hardcode =“A”成为“A”。 这是公式:

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

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

  A2="A" 

  A2=$A$1 

这将允许你有一个dynamic的值,而不是“A”,所以完整的代码将是…

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

该代码背后的逻辑如下:查看当前行中的字母…如果当前行中的字母是“A”[或匹配$ a $ 1的内容],则将该数字留空。 如果当前行中的字母与前一行中的字母相同,则将上一行中的数字加1。 如果当前行中的字母与上面的行不同(并且不是“A”或$ A $ 1),则从1开始。

Excel解决方案

从B2单元格开始(B1可以硬编码为1):

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

这只是查看前一行 – 如果前一行中的列A表示“A”,那么我们知道这个当前行是从1开始的新行。如果不是上面行中的“A”,我们知道这是目前伯爵的延续。 它首先检查当前行 – 如果当前行是“A”,我们知道我们希望这个行是空白的。