如何在每个数据行之间将数据行从A列复制到B列

时间:2019-10-31 00:39:20

标签: excel

Troubles with the update formula Troubles with formula, asking for a missing matrix Steps, I have tried to retrieve data from column B to column D Know is telling that I insert insufficient arguments下午好,

我有B列,用葡萄牙语进行描述,逐行和D列,并用英语进行翻译: 我正在尝试在D列的英语中每个数据行下方插入相应的葡萄牙语翻译。

但是我找不到任何公式可以做到这一点,也没有在论坛中找到类似这样的问题。 唯一最接近的问题是,在具有公式= MOD(ROW(D2),2)= 0或过滤器添加序列的数据行之间插入空白行。并使用vlookup检索数据,如附件中的图像。

2 个答案:

答案 0 :(得分:0)

将此公式放在结果列中,然后将$ A $ 1调整为您的第一个葡萄牙语术语,将$ B $ 1调整为您的第一个翻译术语:

'=OFFSET($A$1;((ROW()-ROW($B$1))/2)-ROW($A$1)+1;0)

您应该获得一列,其中每个葡萄牙语术语都会重复。现在,您可以用英文翻译覆盖上方单元格中的公式。

该公式计算当前(翻译行)单元格与第一个翻译后的行之间的差,并将其切成两半:这是与该单元格关联的葡萄牙语术语的行。然后,它使用该行号作为葡萄牙语术语第一行的偏移量。

现在,如果您想让Forst行为空,那么您当然可以在true公式的if部分中填充整个公式:

=IF(MOD(ROW()-ROW($B$1),2)=0;"";OFFSET($A$1;((ROW()-ROW($B$1))/2)-ROW($A$1)+1;0))

这是您在excel中经常会做的事情,我想您知道这个窍门。它使核心公式更难读,但它基本上说:如果该块中的当前行可被2整除,则将该行设置为空,否则将该行设置为与我上面介绍的公式相等

答案 1 :(得分:0)

您可以使用超级查询来解决此任务。

我已使用以下数据进行了演示。请注意,我使用的是 Excel 365英文版

| Portuguese | English |
|------------|---------|
| um         | one     |
| dois       | two     |
| três       | three   |
| quatro     | four    |
| cinco      | five    |
| seis       | six     |
| Sete       | seven   |
| oito       | eight   |
| nove       | nine    |
| dez        | ten     |

步骤是:

  1. 将数据集加载/添加到Power Query Editor;
  2. 制作一个重复的Portuguese列,然后添加一个索引列,其索引从1开始,然后应该具有以下内容:

Added Duplicate and Index Column

  1. 使用Transform标签下的 Merge Columns 合并列功能,将English列与Portuguese - Copy列与自定义分隔符(例如井号标签#)合并(只要该分隔符不是原始文本的一部分),那么您应该具有:

Merged

  1. 使用Transform标签下的拆分列功能,用相同的定界符#拆分合并的列,并确保在“高级设置”中选择将结果放入,如下所示:

Splited

输出将如下所示:

Output

如果您不想在最终输出中显示Portuguese列,可以选择删除它,然后关闭并加载该表到一个新的工作表(默认情况下)。

这是后台的电源查询 M代码。所有使用的功能都在GUI中,因此应易于遵循和执行。

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Portuguese", type text}, {"English", type text}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Portuguese", "Portuguese - Copy"),
    #"Added Index" = Table.AddIndexColumn(#"Duplicated Column", "Index", 1, 1),
    #"Merged Columns" = Table.CombineColumns(#"Added Index",{"English", "Portuguese - Copy"},Combiner.CombineTextByDelimiter("#", QuoteStyle.None),"Merged"),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Merged Columns", {{"Merged", Splitter.SplitTextByDelimiter("#", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Merged"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged", type text}})
in
    #"Changed Type1"

如果您有任何疑问,请告诉我。干杯:)