数据表,左边是我所拥有的,右边是我想要实现的:
如果下一个单元格为空,我需要能够将两个单元格连接在一起。
A 列中的每个单元格都会被填满,但如果 B2 为空,我需要放在一起
A1+A2
(删除 concat 中 A2 的 12345。
注意:如果
B2
为空,则C2和D2也将为空。
这也需要是动态的,因为不仅 B2 可以为空,B3 和 B4 也可以为空,这也需要关联的 A 单元格连接在一起。
我很抱歉,我真的不知道从哪里开始。我尝试过 If 语句和 offset 函数,但未能完全理解它。
这也可以使用 Windows Excel 2010+ 和 Microsoft 365(Windows 或 Mac)中提供的 Power Query 来完成
使用 Power Query
Data => Get&Transform => from Table/Range
Home => Advanced Editor
Applied Steps
以了解算法M代码
let
//Change next line depending on actual data source
Source = Excel.CurrentWorkbook(){[Name="Table27"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Name", type text}, {"Nozzle", type text}, {"Time", type text}, {"Material", type text}}),
//Add Column to group by
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
#"Add Grouping Column" = Table.AddColumn(#"Added Index", "Group", each if [Nozzle] <> null then [Index] else null, Int64.Type),
#"Removed Index Column" = Table.RemoveColumns(#"Add Grouping Column",{"Index"}),
#"Filled Down Grouping Column" = Table.FillDown(#"Removed Index Column",{"Group"}),
//Group with results in a single column as you show
#"Grouped Rows" = Table.Group(#"Filled Down Grouping Column", {"Group"}, {
{"Name-Nozzle-Time-Material", (t)=>
let
prefix = Text.Trim(Text.BeforeDelimiter(t[Name]{0},"-")),
suffix = List.Transform(t[Name], each Text.Trim(Text.AfterDelimiter(_,"-"))),
name = prefix & " - " & Text.Combine(suffix,"+"),
ntm = Record.FieldValues(Record.SelectFields(t{0},{"Nozzle","Time","Material"}))
in
name & " (" & Text.Combine(ntm, " - ") & ")", type text}}),
//Remove grouping column
#"Removed Columns1" = Table.RemoveColumns(#"Grouped Rows",{"Group"})
in
#"Removed Columns1"