如何连接连续列中的多个最后非空白单元格值

如何连接连续列中的多个最后非空白单元格值

我喜欢知道如何使用 Excel 公式以整齐的方式连接来自连续列的多个最后非空白单元格的值,即我的预期值在插图中以绿色突出显示。 插图

在此处输入图片描述

我知道如何通过应用从一列获取最后一个非空白单元格值

=IFERROR(LOOKUP(2,1/(INDIRECT("A1:A"&ROW())<>""),INDIRECT("A1:A"&ROW())),"")

我还知道如何通过应用连接多个值

=TEXTJOIN("",TRUE,G4:L4)

我能想到的可能方法有:

  1. 将源数据从二维数组转换为一维数组并以数组公式返回;我的想法是通过应用公式,然后可以用最后一个非空白单元格填充那些空白单元格值。

源公式 ={1,0,0;0,2,0;0,0,3;4,0,0;0,5,0;0,0,6} 应用公式后返回的数组 ={1,0,0;1,2,0;1,2,3;4,0,0;4,5,0;4,5,6}

  1. 如果使用数组;
  2. 按行而不是按列循环。

但我没有开发出适当的公式。

任何帮助都将不胜感激。谢谢。

字符的解决方案在链接中说明 字符大小写解决方案

答案1

如果您的数据如您所显示的那样,一行的四列中的每一列都只有一个条目,那么:

E1: =A1
E2: =TEXTJOIN("",,IF(A2="", E1,""),A2:D2)

并向下填充

在此处输入图片描述

编辑给出更新后的输入和输出示例:
这可以使用 Windows Excel 2010+ 和 Excel 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 to reflect your actual data source (table name)
    Source = Excel.CurrentWorkbook(){[Name="Table14"]}[Content],

//set the data types to text
    #"Changed Type" = Table.TransformColumnTypes(Source,
        List.Transform(Table.ColumnNames(Source), each {_, type text})),

//Fill across all rows, then down all columns
    #"Transposed Table" = Table.Transpose(#"Changed Type"),
    fillRows = Table.FillDown(#"Transposed Table", Table.ColumnNames(#"Transposed Table")),

    #"Transposed Table1" = Table.Transpose(fillRows),
    fillCols = Table.FillDown(#"Transposed Table1", Table.ColumnNames(#"Transposed Table1")),

//Results column combines the Distinct entries only in each of the four columns
    #"Added Custom" = Table.AddColumn(fillCols, "Output", 
        each Text.Combine(List.Distinct({[Column1],[Column2],[Column3],[Column4]}),""), type text),

//Remove uneeded columns
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column1", "Column2", "Column3", "Column4"})
in
    #"Removed Columns"

在此处输入图片描述

相关内容