
我想知道使用 Excel 公式如何以簡潔的方式連接連續列中的多個最後一個非空白單元格值,即我的預期值在插圖中以綠色突出顯示。
我知道如何透過應用程式從一列中獲取最後一個非空白單元格值
=IFERROR(LOOKUP(2,1/(INDIRECT("A1:A"&ROW())<>""),INDIRECT("A1:A"&ROW())),"")
我還知道如何透過應用來連接多個值
=TEXTJOIN("",TRUE,G4:L4)
我能想到的可能的方法是:
- 將來源資料從二維數組轉換為一維數組並以數組公式返回;我的想法是透過應用公式,然後可以透過最後一個非空白單元格填充這些空白單元格值。
源公式 ={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
如果您的資料如您所示,一行四列中的每一列中只有一個條目,那麼:
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"