基于下方和上方的空单元格进行字符串连接

问题描述 投票:0回答:1

数据表,左边是我所拥有的,右边是我想要实现的:

如果下一个单元格为空,我需要能够将两个单元格连接在一起。

A 列中的每个单元格都会被填满,但如果 B2 为空,我需要放在一起

A1+A2
(删除 concat 中 A2 的 12345。

注意:如果

B2
为空,则C2和D2也将为空。

这也需要是动态的,因为不仅 B2 可以为空,B3 和 B4 也可以为空,这也需要关联的 A 单元格连接在一起。

我很抱歉,我真的不知道从哪里开始。我尝试过 If 语句和 offset 函数,但未能完全理解它。

excel if-statement offset string-concatenation
1个回答
0
投票

这也可以使用 Windows Excel 2010+ 和 Microsoft 365(Windows 或 Mac)中提供的 Power Query 来完成

使用 Power Query

  • 选择数据表中的某个单元格
  • Data => Get&Transform => from Table/Range
  • PQ 编辑器打开时:
    Home => Advanced Editor
  • 记下第 2 行中的表名称
  • 将下面的 M 代码粘贴到您所看到的位置
  • 将第 2 行中的表名称更改回最初生成的名称。
  • 阅读评论并探索
    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"

结果

© www.soinside.com 2019 - 2024. All rights reserved.