如果另一个工作簿上的数据包含“X”值,则显示多个单元格

如果另一个工作簿上的数据包含“X”值,则显示多个单元格

我每天导出一份复杂的报告,并将该信息手动传输到另一个 Excel 表中。我的问题是:在工作簿 1 中,如果第一个单元格显示“x”值,我是否可以将一组单元格连成一行来显示工作簿 2 中的文本(原始数据)?我要导出的是一份每日列表,其中包含课程编号,我手动将其更改为班级编号、姓名、成绩等。然后我要做的是按班级排序,并在工作簿的各自部分中显示它们。

因此,我想找出的是类似这样的内容“如果工作簿 2 的单元格 1 是“X”值,则显示工作簿 2 的单元格 2、3、4、5、6、7。?

答案1

如果 Workbook2 中的单元格 A1 等于某个值“X”,则以下公式提供了在 Workbook1 中显示 Workbook2 中某行(六个单元格)文本的另一种方法。

这是一个数组公式,因此您必须选择 Workbook1 中要显示文本值的六个单元格,将公式粘贴或键入公式栏中,然后使用Ctrl+ Shift+完成输入Enter。如果 Workbook2 的单元格 A1 中没有“X”,则公式将在单元格中显示破折号(“-”)。(为简单起见,我假设两个工作簿中的值都在 Sheet1 中。)

  =IF([Workbook2.xlsx]Sheet1!$A$1="X",OFFSET([Workbook2.xlsx]Sheet1!$B$1,0,0,1,6),"-")

该公式的关键部分是 OFFSET 函数,它采用以下参数:

  • A单元格引用,在本例中为 $B$1
  • A行偏移,要返回的单元格区域开始的行数(负数)或行数(正数)
  • A列偏移,要返回的范围从左(负)或右(正)开始的列数
  • 高度或要返回范围内的行数
  • 宽度或您想要返回的范围内的列数。

在公式中,单元格引用为 $B$1,与 $B$1 的行偏移量为 0,与 $B$1 的列偏移量为 0,要返回的值的高度为 1 行,宽度为 6 列。此处,如果“X”匹配,OFFSET 函数将返回单元格 B1:G1 中的值。如果行偏移量为 2,列偏移量为 4,则将返回单元格 F3:K3 中的值。

答案2

我假设您的 Workbook2 数据从第 行开始1,并且您的意思是“如果第 、 、 、 、 和 …… 列中的值为“X”,则显示第B、、 、、和 …… 列中的单元格”。在您想要开始显示第 、 C、 、 、和……列中的数据(来自 B1)的 Workbook1 中的第一个单元格中,键入DEFGA

=IF('路径_到_工作簿2[filename_of_Workbook2,包括.xlsx]Sheet1'!$A1="X",
    '
路径_到_工作簿2[工作簿 2 的文件名]Sheet1'!B1, "")

然后将其拖拽/填充到列中F,并根据需要向下拖动/填充行数。显然,如果您的工作表名称不是Sheet1,请更改。

答案3

使用 VLookup:

Vlookup($A:$A,[OtherWorkbook.xls]OtherWorksheet!$A:$G,2,false)

相关内容