2

Я получаю еженедельные статусы для наших открытых рабочих заданий в виде файла CSV. Это включает в себя трехбуквенные коды состояния, связанные с различными шагами в процессе завершения.

Мне нужно поместить определения на простом языке вместо кодов состояния.

Моя электронная таблица делает это автоматически, но мне кажется, что электронная таблица на самом деле неэффективна. Лист, который делает это сам по себе, занимает более 75 МБ, и все это рушит.

Как работает мой текущий лист, это сетка из 16 столбцов с кодами состояния из CSV в [@ [SO Codes] и статическим списком кодов в строке 1. Каждый второй ряд имеет 16 строк:

=IF([@[SO Codes]]=Table3[[#Headers],[AA]],1,0)
=IF([@[SO Codes]]=Table3[[#Headers],[CA]],2,0)
=IF([@[SO Codes]]=Table3[[#Headers],[CAN]],3,0)
так далее

Таким образом, каждому коду состояния присваивается номер от 1 до 16, который отображается в сетке 16x [количество открытых рабочих заданий].

Последний столбец:

=SUBTOTAL(9,E2:T2)
=SUBTOTAL(9,E3:T3)
=SUBTOTAL(9,E4:T4)
так далее

Наконец, это поступает в мой трекер со строками, которые выглядят следующим образом:=CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3),IF([@Status]=J4,L4),IF([@Status]=J5,L5),IF([@Status]=J6,L6),IF([@Status]=J7,L7),IF([@Status]=J8,L8),IF([@Status]=J9,L9),IF([@Status]=J10,L10),IF([@Status]=J11,L11),IF([@Status]=J12,L12),IF([@Status]=J13,L13),IF([@Status]=J14,L14),IF([@Status]=J15,L15),IF([@Status]=J16,L16),IF([@Status]=J17,L17))

Где столбец L - это список определений открытого текста, а J3 выводит промежуточные итоги из калькулятора кодов состояния.

Я не могу помочь, что должен быть более элегантный и эффективный способ сделать это. Любое понимание? Я попытался использовать функцию = CHOOSE непосредственно для кодов из CSV, но она работает только для числовых значений. Я включил фотографии каждого шага, потому что чувствую, что плохо объяснил.

CSV код калькулятор

Tracker

2 ответа2

1

Эта формула выбора может быть записана как

=Vlookup([@Status],$J$2:$L$17,3,False)

Не уверен, что я понимаю, в чем остальная проблема.

0

калькулятор кодов:

Вместо длинной таблицы вы можете использовать один MATCH():
=MATCH([@[SO CODES]],TableHelper[code list],0)

Tracker

Здесь я не уверен, что правильно понял вашу оригинальную формулу.

=CHOOSE([@Status],IF([@Status]=J2,L2),IF([@Status]=J3,L3)... - Что произойдет, если [@Status]<>J2?) Или это нереальный сценарий? Если да, то просто используйте простую функцию INDEX() :
=INDEX($L$2:$L$17,[@Status])

В противном случае, пожалуйста, укажите, что должна делать ваша формула.

Окончательная оптимизация:

Опять же, если вы хорошо понимаете свою проблему: вам даже не нужны двойные листы, только один.

Я попытался использовать функцию = CHOOSE непосредственно для кодов из CSV, но она работает только для числовых значений

В самом деле, вы можете напрямую передавать коды, просто используйте VLOOKUP() , что-то вроде этого:
=VLOOKUP(<code>,$J:$K,2,false)

куда

  • <code> - это код, для которого вы хотите получить описание
  • $J:$K - столбцы кода и описания согласно вашему скриншоту

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .