Excel 技巧 - 用于查找
Excel Trick - For lookups
我想实现如下截图所示。有什么方法可以使用 excel 中的任何技巧来轻松实现这一目标吗?由于我的数据集很大
输入:
输出:
总结: 使用 Power Query 编辑器功能。
Select 范围内的所需数据:
右键单击并 select 从 table/range 获取数据...按照屏幕说明进行操作
更具体的步骤:
1.0) Select 数据;然后右键单击 select 从 table/range
获取数据
2.0) 从 Power Query 编辑器弹出窗口...
2.1) Select 反透视数据的范围..(Shift 和 select 第一列和最后一列带日期)
2.2) 转到转换逆透视列
2.2.1) 现在你应该有 3 列
2.3 select 带日期的值列
2.3.1 变换--> 透视列
弹出窗口中的 2.3.2 将属性作为您的值列
2.3.2.1 select 高级和 select 最小值或最大值(哪个无关紧要)
2.4 select 关闭并加载。
如有需要,将以上记录为宏,重复执行;但是一旦你学会了,这些步骤就非常简单了。
这是针对您的问题的 Excel 365 公式解决方案:
我在 sheet 中添加了一个 table tblData
- 数据不是 100% 等于你的...使用 table 的好处:列已解决他们的名字不是“抽象的”A、B、C
A13、B12、B13中的公式是溢出公式-所以new的大小table取决于数据源的数据。
A13:=tblData[Tool]
使用所有工具溢出
B12:=LET(minDate,MIN(tblData[[ROM]:[EOP]]),maxDate,MAX(tblData[[ROM]:[EOP]]), SEQUENCE(1,maxDate-minDate+1,minDate))
根据 ROM 和 EOP 列的日期范围向右溢出
B13:=LET(rgROM,FILTER(tblData,(tblData[#Headers]="ROM")), rgEOP,FILTER(tblData,(tblData[#Headers]="EOP")), rowIndex,SEQUENCE(ROWS(rgROM)), IF(INDEX(rgEOP,rowIndex)=B12#,"EOP", IF(INDEX(rgROM,rowIndex)=B12#,"ROM","")))
检查第 12 行的日期是否等于 EOP 或 ROM 中的日期 - 如果是,则写入相应的值。
如果您在 ROM 和 EOP 中添加行或更改日期,结果 table 将处理此问题。
除了格式化日期 - 这必须手动完成 - 特别是。如果日期范围增加。
格式条件没有溢出 - 但必须手动应用。
也许也可以增强它 - 但我还没有尝试过。
=AND(COLUMN()>=MATCH("EOP",$B13:$P13,0)+1,COLUMN()<=MATCH("ROM",$B13:$P13,0)+1)
请根据您的需要调整单元格引用
我想实现如下截图所示。有什么方法可以使用 excel 中的任何技巧来轻松实现这一目标吗?由于我的数据集很大
输入:
输出:
总结: 使用 Power Query 编辑器功能。 Select 范围内的所需数据: 右键单击并 select 从 table/range 获取数据...按照屏幕说明进行操作
更具体的步骤:
1.0) Select 数据;然后右键单击 select 从 table/range
获取数据2.0) 从 Power Query 编辑器弹出窗口...
2.1) Select 反透视数据的范围..(Shift 和 select 第一列和最后一列带日期)
2.2) 转到转换逆透视列
2.2.1) 现在你应该有 3 列
2.3 select 带日期的值列
2.3.1 变换--> 透视列
弹出窗口中的 2.3.2 将属性作为您的值列
2.3.2.1 select 高级和 select 最小值或最大值(哪个无关紧要)
2.4 select 关闭并加载。
如有需要,将以上记录为宏,重复执行;但是一旦你学会了,这些步骤就非常简单了。
这是针对您的问题的 Excel 365 公式解决方案:
我在 sheet 中添加了一个 table tblData
- 数据不是 100% 等于你的...使用 table 的好处:列已解决他们的名字不是“抽象的”A、B、C
A13、B12、B13中的公式是溢出公式-所以new的大小table取决于数据源的数据。
A13:=tblData[Tool]
使用所有工具溢出
B12:=LET(minDate,MIN(tblData[[ROM]:[EOP]]),maxDate,MAX(tblData[[ROM]:[EOP]]), SEQUENCE(1,maxDate-minDate+1,minDate))
根据 ROM 和 EOP 列的日期范围向右溢出
B13:=LET(rgROM,FILTER(tblData,(tblData[#Headers]="ROM")), rgEOP,FILTER(tblData,(tblData[#Headers]="EOP")), rowIndex,SEQUENCE(ROWS(rgROM)), IF(INDEX(rgEOP,rowIndex)=B12#,"EOP", IF(INDEX(rgROM,rowIndex)=B12#,"ROM","")))
检查第 12 行的日期是否等于 EOP 或 ROM 中的日期 - 如果是,则写入相应的值。
如果您在 ROM 和 EOP 中添加行或更改日期,结果 table 将处理此问题。
除了格式化日期 - 这必须手动完成 - 特别是。如果日期范围增加。
格式条件没有溢出 - 但必须手动应用。 也许也可以增强它 - 但我还没有尝试过。
=AND(COLUMN()>=MATCH("EOP",$B13:$P13,0)+1,COLUMN()<=MATCH("ROM",$B13:$P13,0)+1)
请根据您的需要调整单元格引用