【问题标题】:Look for incorrect values查找不正确的值
【发布时间】:2023-01-11 02:10:39
【问题描述】:

我目前正在处理一个 Excel 电子表格,在 B 列中我们有每个人的序列值。

问题是:数据集中有多少 pserial 值不正确?

pserial 是一个 8 位值,将 6 位 hserial 值和 persnum 值(家庭内的人员编号)组合为 2 位值。 例如,对于家庭 1,pserial 是:10105101 其中最后两个数字是 persum,前 6 个是 hserial。 但是,有人担心数据中可能存在一些错误,例如其中一些 pserial 值不遵循此规则,因此是不正确的。

我无法更改或更改任何数据,即使您发现错误. 这是电子表格,您可以看到数据从第 11 行开始,直到第 9291 行还有更多数据

我不确定要使用什么代码,但我可以在这里使用宏或公式。随意使用其中任何一个。

【问题讨论】:

  • 做一个简单的测试: =A11=left(c11,6)*1 然后展开最后2位。
  • 是的,但这给了我第一个,我需要计算其中有多少是不正确的。这只会返回一个 TRUE
  • 所以对每一行都这样做然后计算真实的数量......
  • @irene1509 我看到你最近发布了另一个question,它仍在等待接受答案。我不知道作为新贡献者您是否知道这一点。请检查此链接。 What should I do when someone answers my question?。谢谢

标签: excel spreadsheet


【解决方案1】:

此公式检查pserial 是否与hersial & persnum 相同为2digit 值,并统计所有错误。

=SUM(($C$11:$C$20<>NUMBERVALUE($A$11:$A$20&IF(LEN($B$11:$B$20)=1;0&$B$11:$B$20;$B$11:$B$20)))*1)

【讨论】:

    【解决方案2】:

    在这里您可以检查每一行是否连载列值格式正确。在D2 单元格中,您可以输入以下公式:

    =IF(C2:C7=1*(A2:A7 & TEXT(B2:B7,"00")), TRUE, FALSE)
    

    这是输出:

    笔记:您可以使用条件格式来突出显示 D2:D7 范围内的错误,如下所示:

    =C2:C7=1*(A2:A7 & TEXT(B2:B7,"00")) = FALSE
    

    它假设persnum中的列值连载列的格式为两位数,值来自连载列是数字(不是文本),这就是为什么我们乘以 1 来进行比较之前的对话。它使用您在问题中提到的逻辑来构建连载号码来自序列号persnum列。

    如果您只想计算错误总数,请按如下方式重用前面的公式:

    =LET(result, IF(C2:C7=1*(A2:A7 & TEXT(B2:B7,"00")), TRUE, FALSE),
     ROWS(FILTER(result, result=FALSE,0)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多