Страницы: 1
RSS
посчитать количество товара в зависимости от его названия, посчитать товар
 
Здраствуйте, помогите пожалуйста, есть очень много заказов с разным товаром в формате:

****
2 x товар1
адрес 1 строка
адрес 2 строка
транспортная компания

****
4 x товар2
адрес 1 строка
адрес 2 строка
транспортная компания

необходимо чтобы автоматически посчитало сколько товара1 и сколько товара2

заранее спасибо за помощь
Изменено: Павел - 19.05.2022 19:00:33
 
формула массива:
Код
=СУММ(ЕСЛИ(ДЛСТР(A1:A23)>ДЛСТР(ПОДСТАВИТЬ(A1:A23;$G1;""));ЗНАЧЕН(ЛЕВБ(A1:A23;ПОИСК(" ";A1:A23)-1));))
Изменено: Ігор Гончаренко - 19.05.2022 19:58:58
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, к сожалению не считает, показывает ноль
 
Павел, в PQ (вставить данные в столбец таблицы и нажать Обновить все на панели Данные):
Код
let
  src = List.Buffer ( Excel.CurrentWorkbook(){[ Name = "data" ]}[Content][Данные] ),
  starsPosns = List.Buffer ( List.PositionOf ( src, "****", Occurrence.All ) ),
  rows = List.Accumulate (
    starsPosns,
    {},
    ( s, c ) =>
      [
        data    = src{c + 1}?,
        text    = if data = null then "" else data,
        count   = Number.From ( Text.BeforeDelimiter ( text, " x " ) ),
        product = Text.AfterDelimiter ( text, " x " ),
        result  = s & { { product, count } }
      ][result]
  ),
  toTable = Table.FromRows ( rows, type table [ Товар = text, Количество = Int64.Type ] ),
  group = Table.Group ( toTable, { "Товар" }, { { "Количество", each List.Sum ( [Количество] ), type number } } )
in
  group
Изменено: surkenny - 19.05.2022 19:59:06
 
к счастью, нужно ввести как формулу массива, а не как-нибудь
гуглите "формула массива с чем едят,  как подают"
Изменено: Ігор Гончаренко - 19.05.2022 19:59:50
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
surkenny, Ігор Гончаренко, спасибо, помогли оба варианта
 
Так пошустрее будет, наверное, если в "блоках" всегда по 5 значений:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content][Данные],
  data = List.RemoveFirstN ( List.Alternate ( List.RemoveNulls ( src ), 4, 1, 2 ) ),
  rows = List.Transform (
    data,
    ( x ) =>
      [ count = Number.From ( Text.BeforeDelimiter ( x, " x " ) ), product = Text.AfterDelimiter ( x, " x " ), result = { product, count } ][result]
  ),
  toTable = Table.FromRows ( rows, type table [ Товар = text, Количество = Int64.Type ] ),
  group = Table.Group ( toTable, { "Товар" }, { { "Количество", each List.Sum ( [Количество] ), type number } } )
in
  group
Страницы: 1
Наверх