суббота, 11 февраля 2012 г.

Пример 2: максимальное количество повторений значений подряд

Приветствую вас!

Совсем недавно я столкнулся с задачей следующего характера: нужно было с помощью формул определить какое максимальное количество раз ПОДРЯД встречается определенное значение в столбце.



Ну, к примеру, можно искать сколько раз значение 1 повторяется.
Макросом эта задача решается элементарно:
Кстати, что касается условных операторов, на этом примере видно 2 варианта синтаксиса условного блока: вариант без End If и в одну строку используется, когда в условном блоке находится только 1 команда.

И еще одно, что я настоятельно рекомендовал бы начинающим пользователям макросов, отмечать строки, находящиеся внутри какого-то блока (условного блока или цикла) предварительно отступив некоторое место (например, я использую tab для отступа, как видно на скриншоте. Точно также я делаю в HTML - очень удобно для того, чтобы не забывать ставить закрывающие тэги.

Как решить данную задачу с помощью формул я некоторое время размышлял, пока не написал макрос и не вникнул в то, что я написал:
- переменная k считает текущее количество повторений;
- переменная q выбирает максимальную k.
И так я понял, что решить эту задачу формулами тоже абсолютно просто:
- в столбце B будут располагаться текущие значения переменной k;
- после чего из них мы выберем максимальное значение формулой МАКС.

1. В столбце В в ячейке В1 формула =ЕСЛИ(A1=1;1;0) 
2. ячейке В2 формула =ЕСЛИ(A2=1;C1+1;0) и растягивается с В2 до В1000 
3. в ячейке С1 формула =МАКС(B:B) 


Вот так просто! Весь интерес в данной задаче представляет собой счетчик в столбце В, который взаимодействует не только со столбцом значений А, но и со значениями из своего же столбца В.


Дальше будет...
Буду рад вас видеть вновь на страницах моего блога!

2 комментария:

  1. Добрый день! Мне нужно 2 макроса

    1 макрос
    Существуют 2 колонки в таблице A и C. В колонке A перечислены на кириллице названия регионов России, по одному названию в каждой клетке.
    С использованием макроса. Нужно скопировать в колонку C названия регионов с копированием (растягиванием вниз). Если ввести копирование "по 3". То должно появиться 3 Краснодара, ниже 3 Иваново, 3 Ростова, 3 Кирова. С сохранением порядка, как в колонке A, только по 3. Цифру 3 можно заменить на любую другую, до значения 999.

    Пример:

    Копирование и замена 3

    Колонка A
    Усть-Илимск
    Нижний Тагил
    Норильск

    Колонка B
    Усть-Илимск
    Усть-Илимск
    Усть-Илимск
    Нижний Тагил
    Нижний Тагил
    Нижний Тагил
    Норильск
    Норильск
    Норильск

    2 макрос
    Существуют 3 колонки A, B и С. В колонке A перечислены на кириллице названия регионов России, по одному названию в каждой клетке. В колонке B написан один и тот же текст.
    С использованием макроса, в колонке B, нужно ЗАМЕНИТЬ часть текста с копированием вниз (растягиванием). Если ввести копирование "по 5". То должно появиться по 5 замен вниз с сохранением порядка. Результат выдать в колонку C

    Пример:

    Копирование и замена 5

    Колонка А
    Иваново
    Краснодар
    Нижний Новгород
    Красноярск
    Емельяново

    Колонка B
    Доставка ___
    Доставка ___
    Доставка ___
    Доставка ___

    Колонка С
    Доставка Иваново
    Доставка Иваново
    Доставка Иваново
    Доставка Иваново
    Доставка Иваново
    Доставка Краснодар
    Доставка Краснодар
    Доставка Краснодар
    Доставка Краснодар
    Доставка Краснодар
    Доставка Нижний Новгород
    Доставка Нижний Новгород
    Доставка Нижний Новгород
    Доставка Нижний Новгород
    Доставка Нижний Новгород
    Доставка Красноярск
    Доставка Красноярск
    Доставка Красноярск
    Доставка Красноярск
    Доставка Красноярск
    Доставка Емельяново
    Доставка Емельяново
    Доставка Емельяново
    Доставка Емельяново
    Доставка Емельяново

    ОтветитьУдалить
    Ответы
    1. Доброго времени суток! Могу сделать. Еще актуально?

      Удалить