把名字按字拆分,然后判断是否存在重复

CREATE TABLE #T
(
    名字 VARCHAR(10)
)
 
INSERT INTO #T VALUES('汤晶1晶'),('张三丰'),('欧阳兰兰'),('孙悟空')
 
--把名字按字拆分,然后判断是否存在重复
SELECT * FROM #T WHERE EXISTS
(  
    SELECT * FROM
    (
    SELECT SUBSTRING(名字,number,1) AS V
        FROM master..spt_values WHERE type='P' AND number BETWEEN 1 AND LEN(名字)
    ) A
    GROUP BY V HAVING COUNT(1)>1
  )


 
drop  table #T

 

<think>嗯,用户想用Excel判断某个人是否有一个以上的权限。首先,我需要理解用户的需求。他们可能有一个包含人名和对应权限的列表,想要检查每个人是否有多个权限。比如,同一个名字在列表中出现了多次,可能每个实例对应不同的权限。用户希望对于每个名字判断是否有多个权限存在。 接下来,我需要考虑Excel中可以实现这个功能的方法。常见的方法可能有使用COUNTIF函数来统计每个名字出现的次数。如果次数大于1,就表示有多个权限。或者可能需要结合其他函数,比如IF函数来返回“是”或“否”的结果。 比如,假设人名在A列,权限在B列。用户可能需要在一个新的列中,针对每个名字,检查在A列中出现的次数是否超过1。这时候可以用COUNTIF(A:A, A2)>1,然后用IF函数来显示结果。例如:=IF(COUNTIF(A:A, A2)>1, "是", "否")。不过这里有个问题,COUNTIF统计的是A列中该名字出现的次数,也就是如果同一个人被分配了多个权限,不管权限是否相同,只要名字重复就算。但用户可能关心的是不同的权限,所以可能需要检查权限是否不同。 但问题描述中并没有明确是否需要考虑权限是否不同,可能用户只需要判断是否有多个权限,不管是否重复。比如,同一个人可能有多个相同的权限条目,或者不同的。这时候用户可能只需要知道是否存在多个权限记录,而不管权限内容。所以可能COUNTIF足够。 不过另一个方法是使用数据透视表,统计每个人的记录数,然后筛选出大于1的条目。但用户可能需要直接在原数据旁边显示结果,因此用公式更合适。 另外,如果有多个权限,可能需要考虑去重后的数量。例如,同一个人可能有多个相同的权限,这时候是否算多个?比如,如果用户被分配了两次相同的权限,是否需要算作一个还是多个?这时候可能需要用COUNTIFS函数,统计同一人名下不同权限的数量。但这就需要更复杂的处理,比如使用SUMPRODUCT和COUNTIFS的组合,或者使用辅助列来去重。 但根据用户的问题描述,可能只需要判断该人员在列表中出现的次数是否超过一次,即是否有多个权限条目,无论权限是否相同。所以最简单的解决方案是使用COUNTIF函数统计该名字出现的次数,如果大于1,则返回“是”,否则“否”。 例如,在C2单元格输入公式:=IF(COUNTIF(A:A, A2)>1, "是", "否"),然后向下填充。这样,每个名字如果有多个条目,就会被标记为“是”。 不过需要确认是否每个权限条目都是独立的,也就是说,一个人名在同一行出现多次,每行对应不同的权限。这种情况下,COUNTIF是正确的。但如果有其他情况,比如同一行有多个权限,可能需要其他处理方式,比如拆分数据。 另外,用户可能需要高亮显示重复名字,这时可以使用条件格式,基于COUNTIF的结果设置格式。但问题中主要询问的是如何判断,所以公式方法更直接。 总结:使用COUNTIF函数统计每个名字出现的次数,结合IF函数返回是否有一个以上的权限。或者使用COUNTIFS如果需要考虑其他条件。这里给出最简单的解决方案,并提醒用户注意是否考虑权限内容的不同。</think>在Excel中判断某个人是否有一个以上的权限,可以通过以下步骤实现: --- ### **方法1:使用公式直接判断** 假设数据如下: - **A列**:人员姓名 - **B列**:权限名称 1. **统计每个人的权限数量** 在C列输入公式(以C2为例): ```excel =COUNTIF(A:A, A2) ``` 这会统计A列中与当前行姓名相同的总次数(即权限数量)。 2. **判断是否大于1** 在D列输入公式: ```excel =IF(C2>1, "是", "否") ``` 或合并为一个公式: ```excel =IF(COUNTIF(A:A, A2)>1, "是", "否") ``` --- ### **方法2:条件格式高亮显示** 若需直观标记重复人员: 1. 选中A列数据。 2. 点击【开始】→【条件格式】→【突出显示单元格规则】→【重复值】。 3. 选择标记颜色,重复的姓名会自动高亮。 --- ### **方法3:数据透视表统计** 1. 选中数据区域,点击【插入】→【数据透视表】。 2. 将“姓名”拖到“行”,再拖一次“姓名”到“值”区域(确保计算方式为“计数”)。 3. 在数据透视表中,筛选“计数项:姓名”大于1的行,即可看到有多个权限的人员。 --- ### **注意事项** - 如果权限可能重复(例如同一人有多个相同权限),且需判断是否拥有**不同**权限,可使用以下公式去重统计: ```excel =IF(SUMPRODUCT(($A$2:$A$100=A2)*(1/COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,$B$2:$B$100))))>1, "是", "否") ``` --- 根据需求选择合适的方法即可快速判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值