我是 Excel 新手,做这个的时候总是卡住。我猜肯定有一些关于“查找”功能的工作,但我不知道该用哪一个,也不知道该如何开始。
假设我的第一张表有两列:
项目A | 项目B |
---|---|
飞机 | 苹果 |
公共汽车 | 香蕉 |
公共汽车 | 草莓 |
车 | 梨 |
如您所见,第一列不包含唯一值(“bus”出现两次)
我有第二张表,其中包含两列:
项目A | 项目B |
---|---|
飞机 | |
公共汽车 | |
车 | |
车 | |
飞机(回车)车 |
同样,第一列可以有重复项(这里是“car”),但单个单元格可以包含由 CR(回车)字符分隔的多个值。
我想要找到一个函数,它将从第一张表获取 (ItemB) 的所有值并将它们复制到第二张表的 ItemB 列中。
因此,“巴士”项目将具有“香蕉(回车)草莓”,两个“汽车”将具有“梨”填充,“飞机(回车)汽车”将在 ItemB 列中具有“苹果(回车)梨”值。
第二张表将是:
项目A | 项目B |
---|---|
飞机 | 苹果 |
公共汽车 | 香蕉(回车)草莓 |
车 | 梨 |
车 | 梨 |
飞机(回车)车 | 苹果(回车)梨 |
这样的事可以做吗?
谢谢 !
答案1
数据选项卡包含完成此任务所需的所有工具。首先,将原始数据转换为表格。将第一个表命名为“SourceTable”,将第二个表命名为“TargetList”。现在创建一个新请求并将其代码替换为以下内容
let
ListByRef = (celltext, table) =>
let
MakeTable = Table.FromList(Lines.FromText(celltext), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
MergeValues = Table.NestedJoin(MakeTable,{"Column1"},table,{"ItemA"},"NewColumn",JoinKind.Inner),
Extract = Table.ExpandTableColumn(MergeValues, "NewColumn", {"ItemB"}, {"ItemB"}),
ClearTable = Table.SelectColumns(Extract,{"ItemB"}),
SingleCell = Lines.ToText(Table.Column(ClearTable , "ItemB"))
in
SingleCell,
Source = Excel.CurrentWorkbook(){[Name="SourceTable"]}[Content],
Target = Excel.CurrentWorkbook(){[Name="TargetList"]}[Content],
SingleColumn = Table.SelectColumns(Target,{"ItemA"}),
Result = Table.AddColumn(SingleColumn, "ItemB", each ListByRef ([ItemA],Source))
in
#"Result"
(有关使用 PowerQuery 对表格数据进行各种转换的更多信息,请参阅YouTube 上的培训视频)