我只是一个非常基础的 Excel 用户,所以我会尽我所能解释这一点。我有一个 Excel 表,我们用它来跟踪转到礼宾服务的患者。当他们说“不”时,我会将他们所在行的字体设为红色(每个患者都有一行,其中包含多个列,用于存储他们的信息,如姓氏、名字、地址等)。如果是,我会将其设为绿色,黄色=可能,黑色=死亡,紫色=奖学金。在他们的名字前面,我还有一列,上面写着“是”、“否”、“可能”、“奖学金”或“死亡”,因为我在底部有一个公式来计算每个答案。现在,医生想要的是,每个“是”、“否”、“可能”、“奖学金”等都有自己的表格和公式。所以,如果我在他们的名字旁边写上“是”,他们最终会得到一张全是“是”的新表格。如果他们说“不”,他们最终会得到一张全是“否”的新表格。这可能吗?如果可以,有人能给我一个公式吗?谢谢
答案1
概括
不使用 VBA 的最简单方法之一是在数据旁边添加 3 个“辅助列”(写完后甚至可以隐藏),如下所示:
插入辅助列
如果值等于其行的值,这些辅助列将放置一个索引号,每次找到时都会增加该数字。例如,在我显示的示例中,我将单元格 C2 =
=IF(A2="yes",MAX($C$1:C1)+1,"")
单元格 D2 =
=IF(A2="no",MAX($D$1:D1)+1,"")
依此类推。向下拖动会产生索引号。
在新工作表中收集数据
现在,在单独的表中检索每组数据变得更加简单。
因此,如果 sheet2 中所有项都为“是”,那么我将使用匹配和索引函数。因此 sheet2 中的单元格 A2 将是:
=INDEX(Sheet1!B:B,MATCH(ROW(A2)-1,Sheet1!C:C,0))
工作原理
MATCH(ROW(A2)-1,Sheet1!C:C,0) 部分使用当前行值作为要查找的数字,而 C:C 是 Sheet1 中的“是辅助列”。将其向下拖动时,ROW(A2) 变为 ROW(A3),然后是 ROW(A4),依此类推。MATCH 中的 0 表示它正在寻找精确匹配。
INDEX() 部分只是根据 MATCH 值查找一列。就我而言,我查找了 B 列以从中检索数据。您可以对要复制到新工作表的每一列执行类似操作,将 B 更改为您要从中检索的任何行。