我正在尝试建立一个仅在一列中查找唯一值的系统,如果没有,请列出它们出现在多少行中。
它是如何工作的: 里面有带帽子的袋子。包包有多个帽子,相同的帽子可以分布在不同的包包之间。我试图最终达到可以抬起帽子的位置,它可以告诉我它在哪一个包中。
我已经在Excel上查找了教程,但是大多数教程似乎都适用于数字,而我的资料中有一个“序列”,由描述每个项目的字母组成。
请考虑以下内容:
╔════════╦═════╦═══════════╦════════╦════════╗
║ Serial ║ Bag ║ Style ║ Colour ║ Size ║
╠════════╬═════╬═══════════╬════════╬════════╣
║ SREDCP ║ 1 ║ Cap ║ Red ║ Small ║
║ SGRNST ║ 2 ║ Straw hat ║ Green ║ Small ║
║ MGRYBN ║ 3 ║ Beanie ║ Grey ║ Medium ║
║ SREDCP ║ 4 ║ Cap ║ Red ║ Small ║
╚════════╩═════╩═══════════╩════════╩════════╝
项目SREDCP
出现在袋子1
和4
中。我想要的是这样的:
╔════════╦════════╗
║ Serial ║ Bag(s) ║
╠════════╬════════╣
║ SREDCP ║ 1,4 ║
║ SGRNST ║ 2 ║
║ MGRYBN ║ 3 ║
╚════════╩════════╝
我在excel公式中的经验几乎为零,我想sql可能会更简单,但是我不知道如何设置服务器或任何要求
答案 0 :(得分:0)
一个简单的解决方案是为每个Serial创建一个要查看的值的列,然后在该列上使用TEXTJOIN获取列表。因此,在数据右侧添加一个标题为SREDCP的列。假设F1中包含“ SREDCP”。在F2中,添加公式=IF($A2 = F$1, $B2, "")
并向下复制公式。
您希望在这些行和空白之间看到一个1和4。
然后在下面的某处添加公式=TEXTJOIN(",",TRUE,F2:F5)
,您将看到此解决方案的工作原理。
TEXTJOIN的第一个参数在术语之间添加逗号,第二个参数设置为true则告诉Excel不要担心空白单元格。
现在要添加其他序列号,您可以将F列复制到G列中,并且已经设置好,只需更改第1行中的Serial值即可。
但是,假设您的解决方案具有比显示的数据更多的数据,您可能希望设置一个包含所有序列号的工作表,然后查看引用该表的结果。因此,将列F,G等移至新的工作表。如果需要的话。
答案 1 :(得分:0)
此数组公式将执行您想要的操作:
=TEXTJOIN(",",TRUE,IF(ISNUMBER(MATCH($A$2:$A$5, G2, 0)), MATCH(ROW($B$2:$B$5), ROW($B$2:$B$5)), ""))
输入后按CTRL-SHIFT-ENTER,而不是直接输入,因为它是一个数组公式。
您可以在此处找到有关其工作方式的详细信息:
https://www.get-digital-help.com/2017/12/05/index-match-multiple-results/
特别是该页面上的第3步。