区分大小写的公式,对ID的数字字母组合执行COUNTIF

时间:2019-02-23 15:36:17

标签: google-sheets google-sheets-formula

我们有15到18个符号长的ID,由字母和数字组成。

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

问题在于,有时一个ID或另一个ID的唯一区别是一个字母的大小写是大写还是小写。

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

非常重要的一点是,重复的ID之一是具有1的市场,因为这是后续流程的关键。

使用单个公式可以更简单但更准确地做到这一点吗?

提到的公式:

COUNTIF()

一些虚拟样本ID:

=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)),""))

公式的输出:

003B999992CcVWS
003B999992GdEDo
003B999992D4afI
003B999992CcVWs
003B999992CcVWZ
003B999992D40gR
003B999992D40gR
003B999992CcVWz

所需的输出可以在右侧的最后一栏中看到:

484851665757575757506799868783
48485166575757575750711006968111
4848516657575757575068529710273
4848516657575757575067998687115
484851665757575757506799868790
4848516657575757575068524810382
4848516657575757575068524810382
4848516657575757575067998687122

2 个答案:

答案 0 :(得分:2)

MMULT怎么样?

enter image description here

区分大小写的COUNTIFS

=ARRAYFORMULA(MMULT(
  N(EXACT(A2:A9,TRANSPOSE(A2:A9))),
  ROW(A2:A9)^0
))

区分大小写的COUNTIFS递增

=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},
))

Sheet example

答案 1 :(得分:2)

={"#", "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)})}

0

相关问题