Товарищи, добрый день! Барахтаюсь уже много дней, пытаясь составить регистр для расчета НДФЛ. Многие вопросы уже смог решить, но еще больше не получается. Вот один из них. Вроде простой, но никак не срастается. Есть простая таблица. В столбце месяцы, в строках коды дохода. Естественно не в каждом месяце. Так вот значения больше нуля нужно вытянуть в один столбец, в котором каждый месяц повторяется столько раз, сколько в нем вычетов. Дополнительные наглые требования: не использовать макросы (слишком сложно для меня) и не использовать динамические диапазоны (так как лист будет копироваться по числу сотрудников и не хочу проблем на сводном листе).
Товарищи, добрый день! Барахтаюсь уже много дней, пытаясь составить регистр для расчета НДФЛ. Многие вопросы уже смог решить, но еще больше не получается. Вот один из них. Вроде простой, но никак не срастается. Есть простая таблица. В столбце месяцы, в строках коды дохода. Естественно не в каждом месяце. Так вот значения больше нуля нужно вытянуть в один столбец, в котором каждый месяц повторяется столько раз, сколько в нем вычетов. Дополнительные наглые требования: не использовать макросы (слишком сложно для меня) и не использовать динамические диапазоны (так как лист будет копироваться по числу сотрудников и не хочу проблем на сводном листе).tuls
Я проторопился отчитаться, что все работает. Во-первых формула работает почему-то очень медленно. Намного дольше, чем от нее можно ожидать, даже несмотря на "массивность". Но это даже не главное. Во-вторых работает только в сделанном вами примере. У меня же при любом смещении результирующего диапазона начинает выдавать ошибку #ССЫЛКА. Даже, когда я полностью копирую оба диапазона на другой лист или перетаскиваю чуть в сторону. Проблема еще в том, что я не могу понять ее логику. Пошаговая проверка "Вычислить формулу" крушит Excel. Как я понял на "+СТОЛБЕЦ(C25:G25)%". Все попытки разобраться самому через F9, Ctrl+Z ясности не добавили. Если не трудно, просветите доступно. Я не программист, но кроме меня никто не сделает.
Я проторопился отчитаться, что все работает. Во-первых формула работает почему-то очень медленно. Намного дольше, чем от нее можно ожидать, даже несмотря на "массивность". Но это даже не главное. Во-вторых работает только в сделанном вами примере. У меня же при любом смещении результирующего диапазона начинает выдавать ошибку #ССЫЛКА. Даже, когда я полностью копирую оба диапазона на другой лист или перетаскиваю чуть в сторону. Проблема еще в том, что я не могу понять ее логику. Пошаговая проверка "Вычислить формулу" крушит Excel. Как я понял на "+СТОЛБЕЦ(C25:G25)%". Все попытки разобраться самому через F9, Ctrl+Z ясности не добавили. Если не трудно, просветите доступно. Я не программист, но кроме меня никто не сделает.tuls
Использую только Excel 2003. Так сложились звезды.
дольше, чем от нее можно ожидать, даже несмотря на "массивность"
Не "не смотря", а "благодаря" Формулы массива зачастую выполняют много "лишних" вычислений, отсюда и тормоза.
Код
СТОЛБЕЦ(C25:G25)%
преобразование № столбца в процентный вид (деление на 100). А деление - самое медленное из четырех математических операций (+, *, -, /) Возможно, при применении оператора % происходит не деление, а какие-то другие преобразования...
дольше, чем от нее можно ожидать, даже несмотря на "массивность"
Не "не смотря", а "благодаря" Формулы массива зачастую выполняют много "лишних" вычислений, отсюда и тормоза.
Код
СТОЛБЕЦ(C25:G25)%
преобразование № столбца в процентный вид (деление на 100). А деление - самое медленное из четырех математических операций (+, *, -, /) Возможно, при применении оператора % происходит не деление, а какие-то другие преобразования...vikttur
Сообщение отредактировал vikttur - Понедельник, 07.08.2017, 12:09
Это я понял, хотя не понял, зачем. Вероятно, что из-за изменения номера столбца и не работает формула при перемещении. Но я не понимаю какой результат это деление дает. С куском СЧЁТ(E$24:E24)+1>СЧЁТ(1/C$8:G$19) более менее понятно, а с процентом нет.
Это я понял, хотя не понял, зачем. Вероятно, что из-за изменения номера столбца и не работает формула при перемещении. Но я не понимаю какой результат это деление дает. С куском СЧЁТ(E$24:E24)+1>СЧЁТ(1/C$8:G$19) более менее понятно, а с процентом нет.tuls
Использую только Excel 2003. Так сложились звезды.
дает массив {1,03;ЛОЖЬ;ЛОЖЬ;1,06;ЛОЖЬ:2,03;ЛОЖЬ;..., откуда мы вынимаем n-й наименьший (например, 3-й - 2,03), берем от него остаток от деления на 1 - 0,03, делим на 1%, получаем 3 - это и есть искомый столбец, который мы потом вынимаем ИНДЕКСом из массива A$6:G$6
А если в своем файле что-то не получается, то просто приложите его кусок. Словами сложно
На самом деле в первой формуле СТОЛБЕЦ не нужно, мы ж там строки выковыриваем
дает массив {1,03;ЛОЖЬ;ЛОЖЬ;1,06;ЛОЖЬ:2,03;ЛОЖЬ;..., откуда мы вынимаем n-й наименьший (например, 3-й - 2,03), берем от него остаток от деления на 1 - 0,03, делим на 1%, получаем 3 - это и есть искомый столбец, который мы потом вынимаем ИНДЕКСом из массива A$6:G$6
А если в своем файле что-то не получается, то просто приложите его кусок. Словами сложно_Boroda_
Я не знаю, можно ли так делать, но вложу слегка подчищенную полную страницу расчета по сотруднику. Там много связей, и я ее пол-дня чистить буду от ошибок. Не работает у меня «ваша» формула вставленная на красном поле - серая на том же месте, где в первом файле (пытался сохранить ссылки), и коричневая справа - куда я хотел переместить ее. Тяжесть формулы меня смущает, так как таких листов будет около десятка плюс сводный лист, на который планирую всех вывести. Заранее спасибо за помощь. Буду думать дальше.
Я не знаю, можно ли так делать, но вложу слегка подчищенную полную страницу расчета по сотруднику. Там много связей, и я ее пол-дня чистить буду от ошибок. Не работает у меня «ваша» формула вставленная на красном поле - серая на том же месте, где в первом файле (пытался сохранить ссылки), и коричневая справа - куда я хотел переместить ее. Тяжесть формулы меня смущает, так как таких листов будет около десятка плюс сводный лист, на который планирую всех вывести. Заранее спасибо за помощь. Буду думать дальше.tuls