首页 > 解决方案 > 识别具有重复字符串的单元格

问题描述

有时一个人会输入 9999999999999999 或 0000000000 8999999998888888,...而不是输入他们的身份证号。我想要一个列来识别这些情况,这意味着输入单个字符串(在本例中为数字字符串)超过 7 次的情况。

我不知道该怎么做.. 我最好的猜测是使用 len 计算每个数字,但这将至少打开 10 个 IF 语句......有什么建议吗?

标签: stringduplicatespowerbidax

解决方案


我们可以找到最大位数如下(作为计算列):

MaxDigitCount =
VAR n = LEN ( [ID] )
VAR Digits =
    ADDCOLUMNS ( GENERATESERIES ( 1, n ), "@D", MID ( [ID], [Value], 1 ) )
VAR Frequencies =
    GROUPBY ( Digits, [@D], "@Freq", COUNTX ( CURRENTGROUP (), [Value] ) )
RETURN
    MAXX ( Frequencies, [@Freq] )

假设[ID] = "899999999777"。然后n = 12Digits是通过创建一个列表 from 1to12并添加与每个位置对应的数字列而生成的表。

Digits =

价值 @D
1 8
2 9
3 9
4 9
5 9
6 9
7 9
8 9
9 9
10 7
11 7
12 7

然后通过对每个不同数字的出现次数进行Frequencies分组和计数来总结此表。@D

Frequencies =

@D @频率
8 1
9 8
7 3

最后,返回列中的最大值@Freq


使用它,很容易检查该值是否大于 7。您可以将最后一行修改为

IF ( MAXX ( Frequencies, [@Freq] ) > 7, ">7", "<=7" )

推荐阅读