Google Scripts - переставлять, транспонировать и разделять данные - PullRequest
0 голосов
/ 02 марта 2020

У меня есть лист Google, который я использую для записи данных о продажах. Я вставляю свои необработанные данные в лист A!A1, необработанные данные содержат как текст, так и цифры и символы unsable , которые используются в формуле разделения для определения столбцов.

I Затем я использую скрипт транспонирования, чтобы перетащить эти данные на лист B, вставив данные горизонтально +1 в последнюю строку.

Моя проблема заключается в том, что при разделении данных мой определяющий символ - ] или [ - это хорошо работает, однако товар, записанный в продаже, не отделяется от количества - он остается следующим Item xQuantity#. Если я изменю разделитель на #x, это приведет к разбивке текста сценария, который содержит букву x, а также к выполнению желаемой функции разбиения «Item xQuantity» на «Item, Количество»

Любые предложения будут будьте полезны!

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

По запросу, некоторые примеры данных:

Это вставлено в SheetA! A1:

Общая стоимость $ 4 864 910. Разбивка по предмету: [Сумка шоколадных поцелуев x200 @ 450 = 90,000] [Коробка тканей x1 @ 300 = 300] [Куртка x66 @ 200 = 13,200]

Приведенные выше данные могут быть где угодно от 1 строка текста, до 100+ строк в одной ячейке.

Затем я использую приведенную ниже формулу, чтобы удалить ненужные символы, и разделю ее на нужные столбцы:

=SPLIT( REGEXREPLACE(Front!A3,"^A-Za-z+]. Breakdown per item:, x#"," "),"[]@=")

Я сейчас использую это позволяет перетащить данные в архивный лист, после его уточнения:

  function CaptureData() { 
 var ss = SpreadsheetApp.getActiveSpreadsheet ();
    var source = ss.getRange ("Back!8:8");
  var destSheet = ss.getSheetByName("Data");

  var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
  source.copyTo (destRange, {contentsOnly: true});

}

На рисунке ниже показан архивный лист с желаемыми выходными данными. Обратите внимание, что на снимке экрана в настоящее время показана проблема, с которой я столкнулся.

Архив

1 Ответ

0 голосов
/ 19 марта 2020

Решение

Поскольку индикатором количества предметов является нижний регистр x после пробела, и вы всегда начинаете именование каждого элемента с заглавной буквы X, вы можете вкладывать еще один REGREPLACE заменить [blank space] x на один из ваших символов, настроенных для разделения строки. Следующая формула работает так, как вы намеревались:

=SPLIT( REGEXREPLACE(REGEXREPLACE(A1,"Breakdown per item:"," "), " x", "@"),"[]@=")

Надеюсь, это помогло вам. Дайте мне знать, если вам нужно что-то еще или вы что-то не поняли. :)

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