Помогите, пожалуйста, с формулами Excel

К большому моему сожалению, LLM, в частности ChatGPT ещё абсолютно не способна к нормальным решениям в области работы с Excel/Google Sheet. Какие бы промпты я ни создавал, нейкронка предоставляет либо ошибочные варианты решения, либо путается в синтаксисе. Скармливание ошибок ни к чему результативному не приводит.

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

Суть задачи очень простая. Есть две таблицы в Google Sheets. Необходимо, чтобы первая таблица обращалась к информации во второй и на основе неё считала итоговую стоимость. Немного конкретных данных.

Первая таблица.

B:Страна (текстовый тип данных, это важно)

C:Тариф (текстовый)

D: Кол-во единиц товара (числовой)

E:Период (числовой)

F:Цена (числовой)

Вторая таблица.

A:Тариф (текстовый тип данных)

B:Страна (текстовый тип данных)

C:Оригинальная цена (числовой)

D: Цена продажи

Что нужно: чтобы в первой таблице, при указании типа услуги, тарифа, кол-во единиц и периода таблица сама смотрела во вторую, искала совпадения и автоматически подбивала итоговую стоимость.

Совпадения нужно искать во второй таблице по колонкам A (тарифы разные, от этого зависит стоимость), B (каждой стране присвоена своя цена), C (нужно брать оригинальную стоимость). И у меня почти получилось, но я нашёл крайне странное поведение.

Суть в том, что я использую importrange для связи двух таблиц и тут начинаются самые главные танцы с бубном. Я попытался отладить свои формулы. Для этого я попытался сравнить данные, если просто их указать без импортренджа. Результат сравнения был TRUE. И вот только если я использую импортрендж, сравнение возвращает FALSE, из-за чего, как я понимаю, у меня ничего и не работает. Если я правильно понял, то проблема в том, что импортрендж - это ссылка и разумеется ссылка на объект не будет равна самим данным, потому что типы отличаются. И я решил вместо двух таблиц использовать просто разные листы в рамках одной таблицы. Но результат почему-то оказался прежним, это ни на что не повлияло.

Как итог, я попытался использовать данную формулу:

=ARRAYFORMULA(ЕСЛИ( (B3:B <> "") * (C3:C <> ""); ОКРУГЛ( Ч(D3:D) * Ч(E3:E) / 30 * 0,8 * ИНДЕКС( 'Прейскурант'!C2:C; ПОИСКПОЗ(1; ('Прейскурант'!A2:A = C3:C) * ('Прейскурант'!B2:B = B3:B); 0 ) ); 2 ); ""))

Но, к сожалению, из-за разницы в типе данных (скорее всего) мне просто не возвращается нужный результат. Помогите, пожалуйста, добрый люди.

2
1
1
19 комментариев

Щас ребята из POE подскачут, помогут.

Из EVE Online

2

Без оверлея тут не разобраться

2

Решение такой задачи денег стоит.

Я и не прошу её решить за меня и предоставить ответ. Хотя бы объяснить в чём я заблуждаюсь или подсказать, из-за чего происходит расхождение поиска, что приводит к невалидному результату.

Задача стоит именно эксель-книгу напердолить или просто получить результат?

Если второе, то перегоняем таблицы в powerbi датасет или просто сливаем в условный постгрес и работаем с ними уже по-людски.

Если первое, то добро пожаловать в волшебный мир пердолинга, ибо гугл щитс != эксель.

К сожалению, прейскурант находится именно в Google sheets, чтобы была возможность онлайн-учёта, так сказать. Поэтому и "пердолится" приходится именно с ним. Мне проще было бы даже логику на том же JS выкатить и создать с нуля какой-нибудь синглпейдж аппликейшн. По затраченному времени мб даже быстрее бы вышло.