Google sheets 区分大小写的公式,用于对ID的数字-字母组合执行计数

Google sheets 区分大小写的公式,用于对ID的数字-字母组合执行计数,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我们有15到18个符号长的ID,它们是字母和数字的混合体 通常,我们需要执行COUNTIF()来确定唯一ID的确切数量 问题是,有时一个ID和另一个ID之间的唯一区别是一个字母的大小写是大写还是小写 COUNTIF()不区分大小写,我们需要应用一个很长的公式,将ID转换为单独列中唯一的数字组合,并在另一列中执行COUNTIF() 非常重要的是,其中一个重复ID的市场份额为1,因为这是进一步处理的关键。 有没有一个更简单,但也更准确的方法,可以用一个单一的公式做到这一点 提到的公式是: =IFER

我们有15到18个符号长的ID,它们是字母和数字的混合体

通常,我们需要执行
COUNTIF()
来确定唯一ID的确切数量

问题是,有时一个ID和另一个ID之间的唯一区别是一个字母的大小写是大写还是小写

COUNTIF()
不区分大小写,我们需要应用一个很长的公式,将ID转换为单独列中唯一的数字组合,并在另一列中执行
COUNTIF()

非常重要的是,其中一个重复ID的市场份额为1,因为这是进一步处理的关键。

有没有一个更简单,但也更准确的方法,可以用一个单一的公式做到这一点

提到的公式是:

=IFERROR(CODE(MID(AL3,1,1))&CODE(MID(AL3,2,1))&CODE(MID(AL3,3,1))&CODE(MID(AL3,4,1))&CODE(MID(AL3,5,1))&CODE(MID(AL3,6,1))&CODE(MID(AL3,7,1))&CODE(MID(AL3,8,1))&CODE(MID(AL3,9,1))&CODE(MID(AL3,10,1))&CODE(MID(AL3,11,1))&CODE(MID(AL3,12,1))&CODE(MID(AL3,13,1))&CODE(MID(AL3,14,1))&CODE(MID(AL3,15,1))&IFERROR(CODE(MID(AL3,16,1)),""))
一些虚拟示例ID:

003B999992CcVWS
003B999992GdEDo
003B999992D4afI
003B999992CcVWs
003B999992CcVWZ
003B999992D40gR
003B999992D40gR
003B999992CcVWz
公式输出:

484851665757575757506799868783
48485166575757575750711006968111
4848516657575757575068529710273
4848516657575757575067998687115
484851665757575757506799868790
4848516657575757575068524810382
4848516657575757575068524810382
4848516657575757575067998687122
在右侧最后一列中可以看到所需的输出:

+---+-----------------+----------------------------------+---------+
| # | Account ID      | Formula ID                       | Countif |
+---+-----------------+----------------------------------+---------+
| 1 | 003B999992CcVWS | 484851665757575757506799868783   | 1       |
+---+-----------------+----------------------------------+---------+
| 2 | 003B999992GdEDo | 48485166575757575750711006968111 | 1       |
+---+-----------------+----------------------------------+---------+
| 3 | 003B999992D4afI | 4848516657575757575068529710273  | 1       |
+---+-----------------+----------------------------------+---------+
| 4 | 003B999992CcVWs | 4848516657575757575067998687115  | 1       |
+---+-----------------+----------------------------------+---------+
| 5 | 003B999992CcVWZ | 484851665757575757506799868790   | 1       |
+---+-----------------+----------------------------------+---------+
| 6 | 003B999992D40gR | 4848516657575757575068524810382  | 1       |
+---+-----------------+----------------------------------+---------+
| 7 | 003B999992D40gR | 4848516657575757575068524810382  | 2       |
+---+-----------------+----------------------------------+---------+
| 8 | 003B999992CcVWz | 4848516657575757575067998687122  | 1       |
+---+-----------------+----------------------------------+---------+

那么
MMULT

区分大小写
COUNTIFS
区分大小写
COUNTIFS
递增
那么
MMULT

区分大小写
COUNTIFS
区分大小写
COUNTIFS
递增


非常感谢您的努力!然而,这并没有产生我想要的输出。请看,即使有重复的ID,我也需要至少计算其中一个,因为我还需要1。您提供的公式返回2,其中存在重复项。我的回答肯定有误导性,它会被纠正的。不过,我会对你的回答投赞成票,但我不能将其作为解决方案。@I.Я.Newb,请分享例子。@I.Я.Newb这实际上是正确的方法it@I.Я.新手,检查again@oshliaer对这同样有效。然而,我已经将player0的答案标记为正确。非常感谢你的努力。非常感谢你的努力!然而,这并没有产生我想要的输出。请看,即使有重复的ID,我也需要至少计算其中一个,因为我还需要1。您提供的公式返回2,其中存在重复项。我的回答肯定有误导性,它会被纠正的。不过,我会对你的回答投赞成票,但我不能将其作为解决方案。@I.Я.Newb,请分享例子。@I.Я.Newb这实际上是正确的方法it@I.Я.新手,检查again@oshliaer对这同样有效。然而,我已经将player0的答案标记为正确。非常感谢您的努力。谢谢您的回答!你的回答提供了正确的结果。如果您可以,请让我知道如何调整它以只提供CountIf列,而不提供其余列,我们将不胜感激。谢谢您的回答!你的回答提供了正确的结果。如果您可以,请让我知道如何调整它,以便只提供CountIf列,而不提供其余列,我们将不胜感激。
=ARRAYFORMULA(MMULT(
  N(EXACT(A2:A9,TRANSPOSE(A2:A9))),
  ROW(A2:A9)^0
))
=ARRAYFORMULA(VLOOKUP(
  {ROW(A2:A9)&A2:A9},
  {
    QUERY(
      {ROW(A2:A9)&A2:A9,A2:A9},
      "select Col1,Col2 order by Col2 label Col1'',Col2''"
    ),
    TRANSPOSE(SPLIT(TEXTJOIN("|",0,
      IF(TRANSPOSE(ROW(A2:A9)-1)<=QUERY(
        {A2:A9},
        "select count(Col1) where Col1<>'' group by Col1 label count(Col1)''",
                                  ),
        TRANSPOSE(ROW(A2:A9)-1),
      )
    ),"|"))
  },
  {3},
))
=ARRAYFORMULA(MMULT(
  (ROW(A2:A17)>=TRANSPOSE(ROW(A2:A17))) * 
    EXACT(A2:A17,TRANSPOSE(A2:A17))^1,
  ROW(A2:A17)^0
))
={"#", "Account ID", "Formula ID", "Countif";
 ARRAYFORMULA({ROW(INDIRECT("A1:A"&COUNTA(A21:A))), ARRAY_CONSTRAIN({A21:A,
 IFERROR(CODE(MID(A21:A,  1, 1))&
         CODE(MID(A21:A,  2, 1))&CODE(MID(A21:A,  3, 1))&
         CODE(MID(A21:A,  4, 1))&CODE(MID(A21:A,  5, 1))&
         CODE(MID(A21:A,  6, 1))&CODE(MID(A21:A,  7, 1))&
         CODE(MID(A21:A,  8, 1))&CODE(MID(A21:A,  9, 1))&
         CODE(MID(A21:A, 10, 1))&CODE(MID(A21:A, 11, 1))&
         CODE(MID(A21:A, 12, 1))&CODE(MID(A21:A, 13, 1))&
         CODE(MID(A21:A, 14, 1))&CODE(MID(A21:A, 15, 1))&
 IFERROR(CODE(MID(A21:A, 16, 1)), )),
 IF(LEN(A21:A), MMULT((
 IFERROR(CODE(MID(A21:A,  1, 1))&
         CODE(MID(A21:A,  2, 1))&CODE(MID(A21:A,  3, 1))&
         CODE(MID(A21:A,  4, 1))&CODE(MID(A21:A,  5, 1))&
         CODE(MID(A21:A,  6, 1))&CODE(MID(A21:A,  7, 1))&
         CODE(MID(A21:A,  8, 1))&CODE(MID(A21:A,  9, 1))&
         CODE(MID(A21:A, 10, 1))&CODE(MID(A21:A, 11, 1))&
         CODE(MID(A21:A, 12, 1))&CODE(MID(A21:A, 13, 1))&
         CODE(MID(A21:A, 14, 1))&CODE(MID(A21:A, 15, 1))&
 IFERROR(CODE(MID(A21:A, 16, 1)), )) = TRANSPOSE(
 IFERROR(CODE(MID(A21:A,  1, 1))&
         CODE(MID(A21:A,  2, 1))&CODE(MID(A21:A,  3, 1))&
         CODE(MID(A21:A,  4, 1))&CODE(MID(A21:A,  5, 1))&
         CODE(MID(A21:A,  6, 1))&CODE(MID(A21:A,  7, 1))&
         CODE(MID(A21:A,  8, 1))&CODE(MID(A21:A,  9, 1))&
         CODE(MID(A21:A, 10, 1))&CODE(MID(A21:A, 11, 1))&
         CODE(MID(A21:A, 12, 1))&CODE(MID(A21:A, 13, 1))&
         CODE(MID(A21:A, 14, 1))&CODE(MID(A21:A, 15, 1))&
 IFERROR(CODE(MID(A21:A, 16, 1)), )))) * (ROW(A21:A) >= TRANSPOSE(ROW(A21:A))), 
 SIGN(ROW(A21:A))), IFERROR(1/0))}, COUNTA(A21:A), 3)})}