IF公式来显示一个单元格范围

如果我有四张工作表的Excel工作簿,其中:

工作表1将被用户使用
表2-4将隐藏原始数据。

我已经使用数据validation来创build下拉菜单,以便能够select可search的条件,我如何根据它们的select显示原始数据的一系列单元格?

例如。 如果用户select1,它将显示来自单元格A1-C35,表格3的所有数据。如果他们select2,则将显示来自单元格A14-C46,表格3的所有数据。等等。

完全同意@JoeMalpass,这个问题要求在公共区域至less显示三组不同的数据集合,如果这些数据集合不相似(相同的字段和数据types) ,以正确的格式显示它们是一个问题,即使使用数据透视表将不可能没有用户干预指向正确的领域。 不用说使用VBA会更简单和有效。

现在回到配方解决scheme(并意识到格式问题) ,该解决scheme包括:

  1. 在工作表级别(范围)中为每组数据添加定义的名称。

在将显示数据的工作表中:

  1. 添加一个定义的名字列表(图1)
  2. 添加DataValidation和一些公式以及有关数据集大小的相关信息(图2)
  3. 显示数据组的范围(图3)

定义名称的使用允许在同一工作表中处理多组数据

数据集

对于这个testing,我在不同的工作表中使用了4个数据集。 在工作表级别添加每个数据集的定义名称,为简单起见,除非同一工作表中有多个数据集(即“Sheet2”包含两个数据集 ),否则我总是使用公用名“DATA”

定义名称列表

用于DataValidation并显示范围的大小 在这里输入图像说明 图。 1

使用下列公式的字段

名称 – 构buildDataValidation中使用的Defined Name和公式以显示数据

=CONCATENATE("'",$C3,"'!",$D3) 

工作表和范围 :input分配给每个数据集的工作表和定义的名称

– 显示定义名称的行数

  =IFERROR(ROWS(INDIRECT($B3)),"!Err") 

– 显示已定义名称的列数

  =IFERROR(COLUMNS(INDIRECT($B3)),"!Err") 

地址 – 定义名称(可选)

 =CONCATENATE( ADDRESS(ROW(INDIRECT($B3)),COLUMN(INDIRECT($B3))),":", ADDRESS(ROW(INDEX(INDIRECT($B3),$E3,$F3)),COLUMN(INDEX(INDIRECT($B3),$E3,$F3)))) 

显示数据

在这里输入图像说明 图。 2

使用下列公式的字段

在单元格J2 selectData :Add DataValidation指向B3:B6

– 选定数据集的行数

 =IFERROR(ROWS(INDIRECT($J$2)),"!Err") 

– 所选数据集的列数

 =IFERROR(COLUMNS(INDIRECT($J$2)),"!Err") 

OffsetRow – 在公式中用于显示数据

  =-1+ROW($I$11) 

OffsetColumn :在公式中用于显示数据

  =-1+COLUMN($I$11) 

OffsetRow&OffsetColumn:应指向用于显示数据的范围的第一个单元格,即I11

用于显示所选数据的范围(也可以作为数组公式input)该范围应至less具有按照定义名称列表(即35行和4列)的最大行数和列数。

  =IFERROR(INDEX(INDIRECT($J$2),-$J$5+ROW(),-$J$6+COLUMN()),"") 

在这里输入图像描述 图。 3