![这两个 Excel 2007 公式的正确书写方式或更好的组合方式](https://linux22.com/image/1460385/%E8%BF%99%E4%B8%A4%E4%B8%AA%20Excel%202007%20%E5%85%AC%E5%BC%8F%E7%9A%84%E6%AD%A3%E7%A1%AE%E4%B9%A6%E5%86%99%E6%96%B9%E5%BC%8F%E6%88%96%E6%9B%B4%E5%A5%BD%E7%9A%84%E7%BB%84%E5%90%88%E6%96%B9%E5%BC%8F.png)
我有两个公式。作为这个问题的示例,我们假设我有一个工作簿,它基本上是一个 CD 数据库。它包含您期望的所有常见信息。此工作簿称为Album.xls
。
我还有另一个工作簿,Data.xls
其中包含许多工作表;每个工作表从中提取不同的数据Album.xls
。
如您所知,不同的音乐 CD 每张专辑的光盘数量不同 - 有些只有一张光盘,有些有两张,有些有三张等等。
在 中Album.xls
,每张 CD 的所有信息都包含在行中(每行一张 CD)。光盘数量信息位于 F 列。数据始终是数字,因此光盘 1(在专辑/标题内)用数字 1 表示,光盘 2 用数字 2 表示,依此类推,最多 8 张光盘。
我有一张工作表,Data.xls
我想从中提取每个标题的光盘数量;例如,特定专辑有多少张光盘。
我正在使用下面的两个公式来做到这一点,但我确信我正在以不必要的冗长甚至可能不正确的方式进行操作,所以我想知道是否有人可以建议更好的方法。
在我的光盘计数工作表中Data.xls
...
在 A 列的每个单元格中,我有
=IF(OR([Album.xls]Track!$F$2=1), "Disc 1", IF(OR([Album.xls]Track!$F$2=2), "Disc 2", ""))
对于向下的每个单元格,公式中的单元格引用都会前进 1,因此在A1
单元格引用中是$F$2
,在A2
它的中是$F$3
,依此类推...
这个想法是,这个公式查看 F 列Album.xls
,对于 F 列中的每个单元格,如果它找到数字 1,则显示Disc 1
;如果它找到数字 2,则显示Disc 2
;依此类推......
在 BI 列的每个单元格中
=INDEX($A$2:$A$400, MATCH(0,INDEX(COUNTIF($B$1:B4,$A$2:$A$20),0,0),0))
这将查看 A 列中第一个公式的结果并仅返回唯一值,因此,如果 CD 专辑有 3 张光盘,则将显示前三个单元格:
Disc 1
Disc 2
Disc 3
如果它有 5 张光盘,则会显示:
Disc 1
Disc 2
Disc 3
Disc 4
Disc 5
等等...
抱歉,如果这是冗长的;我相信我的新手正在展现出来,而且我正在努力做到这一点,所以我希望能向你学习。
答案1
对于 A 列,您可以使用:
="Disc "&[CATraxx_Album.xls]Track!$F2
这将输出“Disc X”,其中 X 是 [CATraxx_Album.xls]Track!$F2 中的值。
在 excel 公式中,与号 (&) 运算符用于连接字符串,因此="A"&"B"
输出 AB。这是一个非常有用的运算符,因为您可以使用它来连接许多东西,例如="hello "&C1&", nice to meet you! My name is "&C2&"."
(其中 C1 和 C2 包含名称)。
请注意,我还删除了 A 列公式中 F 和 2 之间的美元符号。这意味着当您将此公式向下拖动时,F 数字将会增加,我相信这是您想要的(您提到 A1 应该引用 F2,A2 引用 F3,等等)。
虽然您已经说明了 B 列的作用,但您没有说明它有什么问题,也没有说明您想如何更改输出。如果您让我知道您想对该输出进行哪些更改,我也可以改进我的答案以解决这个问题。