如何从 Sheet1 的多个列中获取文本,并将其显示在 Sheet2 的行中?

如何从 Sheet1 的多个列中获取文本,并将其显示在 Sheet2 的行中?

我想创建一个公式,基本上说“在 Sheet1 上的任何地方,只要B2:D6列中有文本,并且忽略所有空白单元格,就会自动使该文本出现在 Sheet2 中相应的列下”

我尝试过类似的事情:

VLOOKUP(#NAME?,Sheet1!$B$2:$D$6,#NAME?,"")

我只是不知道如何让它搜索带有文本的单元格并忽略 Sheet1 上的空白,然后在 Sheet2 上返回相同的内容。

我在下面发布了一张图片。非常感谢您的帮助!

截屏。

答案1

您可以在最新版本的O365中使用此公式:

=LET(d,B2:D6,TOROW(FILTER(d,TAKE(d,,1)<>"")))

在此处输入图片描述

编辑:这是使用 Power Query 的版本:

将光标放在表格中的任意位置并使用 Ctrl+T,将原始数据转换为表格。

转到“表设计”选项卡,将表名更改为“数据”(“表名”框位于“表设计”选项卡的左侧)。

然后使用数据>获取数据>从其他来源>空白查询。

这将打开 Power Query 编辑器。

然后使用“主页”>“高级编辑器”,并用以下代码替换那里的代码:

let
    Source = Excel.CurrentWorkbook(){[Name="data"]}[Content],

    //remove blank rows
    RemoveNulls = Table.SelectRows(Source,each [Assigned To] <> null)[[Assigned To],[#"Item #"],[#"Serial #"]],

    //convert each record to a sub-list of a list
    ListOfLists = List.Transform(Table.ToRecords(RemoveNulls),each Record.ToList(_)),

    //combine the sub-lists into a single list of values
    Combine = List.Combine(ListOfLists),

    //convert the list into a one-column table
    AsTable = Table.Transpose(Table.FromColumns({Combine})),

    //the original column headers
    Header = Table.ColumnNames(RemoveNulls),

    //convert the column headers to repeats of the original
    ChangeTableHeader = Table.TransformColumnNames(
                            AsTable,
                            each 
                                let 
                                    num = Number.From(Text.Replace(_,"Column","")),
                                    calc = Number.RoundDown((num - 1) / List.Count(Header)) + 1
                                in Header{Number.Mod(num-1,3)} & " " & Text.From(calc)
                        )
in
    ChangeTableHeader

请注意,Power Query 中不可能有重复的列标题,因此我在每个列标题后都添加了一个序列号。

最后,使用 Power Query 功能区上的“主页”>“关闭并加载”。结果将如下所示:

在此处输入图片描述

相关内容