项目和子项目的自动编号

Automatic numbering for items and sub-items

我有一个 sheet 和 Sl。编号(A 列)说明(B 列)和费率(C 列)。我已经包含了一个“标志”字段,我将在其中输入“m”作为主项,“s”作为子项。我想要SL。 No. 字段将根据标志字段中的条目自动填充。

我对从单元格向上搜索以在标志字段中找到“m”或“s”的第一个实例感到困惑;随后提取出现“m”的相应标志字段的 Col. A 中的值并将其递增 1。任何帮助,将不胜感激。

注意:任何行的删除或添加都会导致 sl。不。根据标志自动更改数字的字段。

在具有 SI 编号的第一个单元格(单元格 A3)中输入此公式:

=IF(D3="s", INDEX($A:$A, ROW()-1)+0.01, 1+ROUNDDOWN(INDEX($A:$A, ROW()-1), 0))

将此公式向下复制到 A 列中。

解释:

想法是检查同一行D列中的字母。如果它是“s”,则从其上方的单元格中获取值并向其添加 0.01。如果它不是“s”(“m”),则也从其上方的单元格中获取该值,但从中删除小数点并向其添加 1。

为了避免行删除,对上面单元格的引用不是使用普通的 A2 相对引用,而是使用 INDEX($A:$A, ROW()-1)。这会将当前行号减一,并检索该行中的单元格。

跟进问题

要在D列既没有"m"也没有"s"的情况下使计数器重新开始,在公式中嵌套另一个IF:

=IF(D3="s", INDEX($A:$A, ROW()-1)+0.01, IF(D3="m", 1+ROUNDDOWN(INDEX($A:$A, ROW()-1), 0), 0))

当 D 列既没有“m”也没有“s”时,这将产生值 0。要隐藏此值,请使用 0.00;-0.00;;@.

格式化 A 列

我建议将此公式用于您的 A 列

=(1/IF(LEN($D11),1,100))+SUM(INDIRECT(ADDRESS(ROW()-1,COLUMN())))

你的 B 列的这个公式

=IF(LEN($D11),"","Sub-" & ROUND(MOD($A11*100,100),0) &" of ") & "Item " & INT($A11)

请输入第11行的公式,按要求上下复制。请注意,不需要在 D 列中标记子项。该公式会查找长度大于 0 的任何条目。您可以使用 "m" 或其他任何内容。如果您希望降低灵活性,请将任一公式或两个公式中的 LEN($D11) 更改为 $D11="m"

将 A 列格式化为 0.00。您可以根据 $B11 的长度使用条件格式将主要项目着色为红色。如果小于 10,它应该是红色的。