求一个EXCEL函数公式,能实现按需求取数

A表是原表,表中D列有2个合并单元格。B区和C区的支持、研究员的顺序也不一致。求大侠们一个函数公式,实现B表从A表取数

A表是原表,表中D列有2个合并单元格。B区和C区的支持、研究员的顺序也不一致。求大侠们一个函数公式,实现B表从A表取数。

这两个表直接取数填充是比较困难的,估计没有现成的函数可以做到。但可以通过转换途径可以实现自动取数。

第一步:将A表的D列,进行拆分填充,变成非合并形式。

取消合并

第二步:分别将A/B表的将前两咧的字段值链接为一列,建立索引。


第三步:利用vlooup函数填充数据。 =VLOOKUP(I14,$I$3:$M$10,2,FALSE)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2024-08-16
在Excel中,根据具体需求来取数,可以使用多种函数,这里提供几个常用的函数示例:
1. **VLOOKUP** - 垂直查找函数,可以根据一列的值来查找另一列的对应值。
- 公式:`=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])`
- 参数:
- `lookup_value`:要查找的值。
- `table_array`:查找值所依据的数据区域或范围。
- `col_index_num`:数据区域中的列号,从该列返回匹配行的值。
- `range_lookup`:查找方式,TRUE 或 FALSE(TRUE 为近似匹配,FALSE 为精确匹配)。
2. **HLOOKUP** - 水平查找函数,与VLOOKUP类似,但是是水平查找。
- 公式:`=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])`
3. **INDEX** - 返回表格或区域中的值或对引用。
- 公式:`=INDEX(array, row_num, [column_num], [area_num])`
- 参数:
- `array`:要返回值的数组或区域。
- `row_num`:数组中的行号。
- `column_num`:数组中的列号(可选)。
- `area_num`:数组中的区域编号(可选)。
4. **MATCH** - 返回指定项在给定数组中的相对位置。
- 公式:`=MATCH(lookup_value, lookup_array, [match_type])`
- 参数:
- `lookup_value`:要查找的值。
- `lookup_array`:包含可能匹配值的数组。
- `match_type`:查找方式,-1、0 或 1。
5. **IF** - 条件判断函数。
- 公式:`=IF(condition, [value_if_true], [value_if_false])`
- 参数:
- `condition`:要判断的条件。
- `value_if_true`:如果条件为真,返回的值。
- `value_if_false`:如果条件为假,返回的值。
6. **CHOOSE** - 从多个选项中选择一个值。
- 公式:`=CHOOSE(index_num, value1, [value2], ...)`
- 参数:
- `index_num`:用于选择值的索引号。
- `value1, value2, ...`:可选的值列表。
7. **OFFSET** - 从指定的参照点返回一个单元格或单元格区域的引用。
- 公式:`=OFFSET(reference, rows, cols, [height], [width])`
- 参数:
- `reference`:参照点。
- `rows`:从参照点向下移动的行数。
- `cols`:从参照点向右移动的列数。
- `height`:返回的引用区域的高度(可选)。
- `width`:返回的引用区域的宽度(可选)。
请根据你的具体需求选择合适的函数,并调整参数以满足你的取数条件。
第2个回答  2024-08-17

方案一:用辅助列计算。如图在A表k2,L2单元格输入公式:

K2 =MAP(DROP(SEQUENCE(ROWS($E$1:$E$6)),1),LAMBDA(X,LOOKUP("座",INDIRECT("D1:D"&X))))

L2 =K2&E2

在B表F2输入公式下拉:F2=IFERROR(FILTER(A!$F$2:$I$6,A!$L$2:$L$6=D2&E2),"")

方案二:直接公式,公式比较长哈。如图在B表F2输入公式向下向右拉即可

F2=IFERROR(INDIRECT("A!"&SUBSTITUTE(ADDRESS(1,MATCH(F$1,A!$A$1:$I$1,0),4),1,"")&VLOOKUP($D2&$E2,IF({1,0},MAP(DROP(SEQUENCE(ROWS(A!$E$1:$E$6)),1),LAMBDA(X,LOOKUP("座",INDIRECT("A!D1:D"&X))))&MAP(DROP(SEQUENCE(ROWS(A!$E$1:$E$6)),1),LAMBDA(X,INDIRECT("A!E"&X))),ROW(A!$E$2:$E$6)),2,0)),"")

相似回答
大家正在搜