Как скопировать строку данных из столбца A в столбец B, между каждой строкой данных - PullRequest
0 голосов
/ 31 октября 2019

Проблемы с формулой обновления Проблемы с формулой, запрос отсутствующей матрицы Шаги, я попытался извлечь данные из столбца B в столбец D Знаете, говорит, что я вставляю недостаточно аргументов Добрый день,

У меня есть столбец B с описаниями на португальском языке, строка за строкой и столбец D с переводами на английском языке: я пытаюсь вставитьв столбце D соответствующий перевод на португальском языке под каждой строкой данных на английском языке.

Но я не могу найти никакой формулы для этого, также я не нашел такого вопроса на форуме. Единственный ближайший вопрос о том, чтобы вставить пустую строку между строками данных с этой формулой = MOD (ROW (D2), 2) = 0 или с фильтром, добавляющим ряд. И получение данных с помощью vlookup, как на прикрепленном изображении.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вы можете использовать запрос мощности для решения этой задачи.

Я использовал следующие данные для демонстрации. Обратите внимание, что я использую 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

Используйте функцию Объединить столбцы на вкладке Transform, чтобы объединить столбец English со столбцом Portuguese - Copy с пользовательским разделителем, таким как хештег # (если этот разделитель не является частьюваших оригинальных текстов), то у вас должно быть:

Merged

Используйте функцию Разделить столбцы на вкладке Transform, чтобы разделить объединенный столбец по тому же разделителю #, и убедитесь, что в дополнительных настройках выбрано размещение результатов в Строки как показано ниже:

Splited

Вывод будет выглядеть следующим образом:

Output

Вы можете удалить столбец Portuguese, если не хотите показывать его в окончательном выводе, а затем Закрыть и загрузить таблицу на новый рабочий лист (путемпо умолчанию).

Вот запрос мощности M Коды позади сцены. Все используемые функции находятся в графическом интерфейсе, поэтому их легко отслеживать и выполнять.

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"

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1070 *

0 голосов
/ 02 ноября 2019

Поместите эту формулу в столбец результатов и установите $ 1 $ для первого португальского термина и $ B $ для первого переведенного термина:

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

Вы должны получить столбец, в котором каждый португальский термин равенповторяется. Теперь вы можете переписать формулы в верхних ячейках английскими переводами.

Формула вычисляет разницу между текущей (переведенной строкой) ячейкой и первой переведенной строкой и делит ее пополам: это строка строкипортугальский термин для связи с этой ячейкой. Затем он использует этот номер строки как смещение по отношению к первой строке португальских терминов.

Теперь, если вы хотите, чтобы первая строка была пустой, вы, конечно, можете заполнить всю формулу в части trueif формула:

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

Это то, что вы часто будете делать в Excel, и я предполагаю, что вы знаете этот трюк. Это делает формулу ядра немного труднее для чтения, но в основном говорит: если текущая строка внутри этого блока делится на два, тогда оставьте строку пустой, иначе установите строку, равную формуле, которую я представил выше .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...