Страницы: 1
RSS
Цикл Excel / Google Sheets
 
Друзья, привет!

Не могу сообразить как сделать цикл для 10ти товаров на 5ти складах для 10ти статей.

Работаю с Google Sheets (новый для меня инструмент).
Возможно, есть какой-то скрипт для этой задачи или просто формулами как в Excel это можно решить.

Заранее благодарю!
 
Примера таблицы нет, значит имеем то, имеем
Код
function myFunction() {
  var statya = [
    'Статья 1.1', 'Статья 1.2', 'Статья 1.3',
    'Статья 2.1', 'Статья 2.2', 'Статья 2.3', 'Статья 2.4', 'Статья 2.5',
    'Статья 3.1', 'Статья 3.2'
  ];
  var res = [];
  res.push(['Артикул', 'Склад', 'Статья'])
  var sh = SpreadsheetApp.getActiveSheet()
  var data = sh.getRange('F:G').getValues().filter(function (row) { return row[0] });
  for (var j = 0; j < statya.length; j++) {
    for (var i = 1; i < data.length; i++) {
      res.push([data[i][0], data[i][1], statya[j]])
    }
  }
  sh.getRange(1, 9, res.length, res[0].length).setValues(res)
}

Изменено: doober - 11.11.2023 00:38:02
 
doober, спасибо, работает!

Но как же быть, если список статей будет расширяться? И как можно изменить порядок столбцов в скрипте?
В идеале структура таблицы должна выглядеть следующим образом: Статья, Подстатья, Артикул, Склад.

Спасибо еще раз.
Изменено: Dina123 - 11.11.2023 13:09:23
 
расположите статью и подстатью в двух столбцах
В этой строке определите сами порядок res.push([data[i][0], data[i][1], statya[j]])
var statya = sh.getRange('A:B').getValues().filter(function (row) { return row[0] });
Изменено: doober - 11.11.2023 18:06:51
 
Доброе время суток.
Цитата
doober написал:
return row[0]
А что если под этой табличкой будет ещё одна очень нужная табличка и даже не одна :)
 
Примера таблицы нет, это так, эскизы.
 
Цитата
doober написал:
Примера таблицы нет
Не, ну, я к тому, что хотя бы, исходя из текущего
Код
var statyaIpodstatya = sh.getRange('A1').getDataRegion().getValues()

применить, к чему весь столбец A-то фильтровать?
Изменено: Андрей VG - 11.11.2023 20:36:25
 
Цитата
написал:
Доброе время суток.Цитата doober  написал: return row[0]А что если под этой табличкой будет ещё одна очень нужная табличка и даже не одна
Такое обязательно случится      

Друзья, решила эту задачу без скрипта. Работает вроде.  
Изменено: Dina123 - 12.11.2023 09:31:35
 
Ну, можно и скриптовой функцией рабочего листа, на входе два диапазона: для категорий и подкатегорий, для всего остального, что нужно повторять
Код
function getCartesianTable(firstRows, secondRows) {
  return firstRows.reduce(function (items, firstRow) {
    secondRows.forEach(function (secondRow) {
      items.push(firstRow.concat(secondRow));
    });
    return items;
  }, []);
} // getCartesianTable

Вызов на рабочем листе
Код
=getCartesianTable(A2:B7; D2:F4)
Страницы: 1
Наверх