Как сделать цикл в excel без vba

Как зацикливать в excel без VBA или макросов?

Можно ли перебирать (цикл) группу строк в Excel без установки VBA или макросов? Google не принес ничего полезного.

Как бы то ни было, мне придется повторить вышеуказанный код 40 раз в каждой ячейке, и у меня есть более 200 ячеек, которым нужен код. сопение

Я хорошо разбираюсь в PHP/SQL, но просто изучаю Excel.

Способ получения результатов вашей формулы должен начинаться с нового листа.

В ячейке A1 поместите формулу

Скопируйте эту ячейку до строки 40 В ячейке B1 поместите формулу

В ячейке B2 поместите формулу

Скопируйте эту ячейку до строки 40.

Значение, которое вы хотите, теперь находится в этом столбце в строке 40.

Не тот ответ, который вы хотите, но это самый быстрый способ добиться успеха, не создавая настраиваемую формулу, которая принимает диапазон и делает расчет (что было бы более интересно сделать).

Я просто искал что-то похожее:

Я хочу суммировать каждый нечетный столбец строки.

SUMIF имеет ДВА возможных диапазона, диапазон для суммирования и диапазон для рассмотрения критериев.

Эта функция будет учитывать, если ячейка в диапазоне B равна "= 1", она будет суммировать соответствующую ячейку A, только если она есть.

Чтобы получить "= 1" для возврата в диапазон B, я поместил это в B:

Затем автоматически заполняется, чтобы получить модуль для заполнения, вы можете поместить и вычислить критерии здесь, чтобы получить условия SUMIF или SUMIFS, которые вам нужно пройти по каждой ячейке.

Проще, чем ARRAY, и скрывает заднюю часть петель!

Собираюсь ответить на это сам (исправьте меня, если я ошибаюсь):

Невозможно выполнить итерацию по группе строк (например, массив) в Excel без установки VBA/макросов.

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

Совокупность результатов из этой таблицы в ячейку результатов.

200 таких ячеек, которые ссылаются на результаты, могут затем ссылаться на ячейку, которая содержит результаты агрегирования. В новейших версиях excel вы можете назвать ячейку результатов и ссылаться на нее таким образом, чтобы упростить чтение.

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

Создание одного цикла в Excel довольно просто. Это на самом деле делает работу для вас. Попробуйте это в новой книге

  • Введите "1" в A1
  • Введите "= A1 + 1" в A2

A3 автоматически будет "= A2 + 1" при перетаскивании. Первые шаги не обязательно должны быть явными. Excel автоматически распознает шаблон и подсчет, если вы просто поместите "2" в A2, но если мы хотим, чтобы B1-B5 был "100", а B5-B10 равным "200" (подсчет таким же образом), вы можете понять, почему зная, как это делать прямо. В этом случае вы просто вводите:

  1. "100" в B1, перетащите на B5 и
  2. "= B1 + 100" в B6

B7 автоматически будет "= B2 + 100" и т.д. при перетаскивании, поэтому в основном он увеличивается каждые 5 строк бесконечно. Чтобы сделать цикл чисел 1-5 в столбце A:

  1. Введите "= A1" в ячейке A6. При перетаскивании автоматически будет "= A2" в ячейке A7 и т.д. Из-за того, как Excel делает вещи.

Итак, теперь у нас есть столбец A, повторяющий числа 1-5, в то время как столбец B увеличивается на 100 каждые 5 ячеек. Вы можете сделать повторение столбца B, например, номера 100-900, используя тот же метод, что и с столбец А, как способ создания, например, каждой возможной комбинации с несколькими переменными. Перетащите столбцы, и они сделают это бесконечно. Я явно не рассматриваю данный сценарий, но если вы выполните шаги и поймете их, концепция должна дать вам ответ на проблему, которая включает в себя добавление большего количества столбцов и взаимодействие или использование их в качестве ваших переменных.

@Nat дал хороший ответ. Но поскольку нет способа сократить код, почему бы не использовать контактен для "генерации" необходимого вам кода. Это работает для меня, когда я ленивый (при наборе всего кода в ячейке).

Поэтому нам нужно просто определить шаблон> использовать Excel для построения шаблона ‘структура’> добавить "=" и вставить его в нужную ячейку.

Например, вы хотите достичь (я имею в виду, введите в ячейку):

Я не набрал его, я просто использовал символ "&" для объединения упорядоченной ячейки в Excel (другой файл, а не файл, над которым мы работаем).

  • Введите часть 1 до А1, часть 3 до С1, часть до E1.
  • Введите "= A1" в A2, "= C1" в C2, "= E1" в E2.
  • Введите "= B1 + 1" в B2, "= D1 + 1" в D2.
  • Введите "= A2 & B2 & C2 & D2 & E2" в G2
  • Введите "= I1 & G2" в I2

Теперь выберите A2: I2 и перетащите его вниз. Обратите внимание, что число добавило инкремент на строку, и сгенерированный текст объединяется, ячейка за ячейкой и строка за строкой.

  • Скопируйте содержание I41,
  • вставьте его куда-нибудь, добавьте "=" впереди, удалите лишнюю & и заднюю часть.

Результат = код, как вы и предполагали.

Я использую Excel/OpenOfficeCalc, чтобы помочь мне генерировать код для моих проектов. Работает для меня, надеюсь, это помогает другим. (:

Как сделать цикл в excel?

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

таблицей БЕЗ макросов и дополнительных модулей (функций пользователя).

Стандартный набор функций Excel не поддерживает ничего похожего на циклы, однако выход нашелся – использование циклических ссылок и итераций.

Первый шаг, чтобы начать работать с циклическими ссылками – это разрешить итеративные вычисления в Excel. В версии Microsoft Office XP это делается в разделе меню «Сервис – Параметры»:

как сделать цикл в excel

В открывшемся окне активируем соответствующий флажок:

как сделать цикл в excel

Так же обратите внимание на поле «Предельное число итераций» — оно определяет, сколько раз будет проходить вычисление по всем циклическим ссылкам, если вы сами не поставите ограничение.

!Информация: В Excel 2007 включение итеративных вычислений производится в пункте меню «Файл – Параметры Excel» в разделе «Формулы».

Рассмотрим пример использования итеративных вычислений в виде цикла.

Впишите в ячейку А1 формулу:

Если значение предельного числа итераций равно 100, то результатом вычислений в ячейке А1 будет равно 100. Теперь изменим формулу:

как сделать цикл в excel

Как видите число итераций мы ограничили числом в ячейке А2, а именно 10. Чтобы проиллюстрировать, как происходят итерации, добавим формулу в ячейку B2:

как сделать цикл в excel

Как видите, каждый этап итерации (новое значение А1) добавляется к ячейке B1 до тех пор пока происходят итерации.

!Замечание: Возможно, результат в B2 будет не таким – для того, чтобы исправить это сделайте следующее: после ввода формулы в ячейку B1 перейдите в ячейку A1, установите курсор в поле редактирования формулы и нажмите Enter – произойдет пересчет итераций. Для корректной работы итераций необходимо задать ряд дополнительных условий, ограничивающих их количество и задающее условие сброса текущего значения поля в исходное значение. Пересчет всех ячеек с циклическими ссылками происходит каждый раз при изменении ячеек, от которых они зависят.

!Дополнительные ссылки:

Встречаются ситуации, когда от программы VBA требуется совершить несколько раз подряд один и тот же набор действий (то есть повторить несколько раз один и тот же блок кода). Это может быть сделано при помощи циклов VBA.

К циклам VBA относятся:

  • Цикл For
  • Цикл Do While
  • Цикл Do Until

Далее мы подробно рассмотрим каждый из этих циклов.

Оператор цикла «For» в Visual Basic

Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For … Next или как цикл For Each.

Цикл «For … Next»

Цикл For … Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:

В этом простом цикле For … Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла. Таким образом, данный цикл суммирует элементы массива iArray в переменной Total.

В приведённом выше примере шаг приращения цикла не указан, поэтому для пошагового увеличения переменной i от 1 до 10 по умолчанию используется приращение . Однако, в некоторых случаях требуется использовать другие значения приращения для цикла. Это можно сделать при помощи ключевого слова Step, как показано в следующем простом примере.

Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:

Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.

Цикл «For Each»

Цикл For Each похож на цикл For … Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:

Оператор прерывания цикла «Exit For»

Оператор Exit For применяется для прерывания цикла. Как только в коде встречается этот оператор, программа завершает выполнение цикла и переходит к выполнению операторов, находящихся в коде сразу после данного цикла. Это можно использовать, например, для поиска определённого значения в массиве. Для этого при помощи цикла просматривается каждый элемент массива. Как только искомый элемент найден, просматривать остальные нет необходимости – цикл прерывается.

Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:

Цикл «Do While» в Visual Basic

Цикл Do While выполняет блок кода до тех пор, пока выполняется заданное условие. Далее приведён пример процедуры Sub, в которой при помощи цикла Do While выводятся последовательно числа Фибоначчи не превышающие 1000:

В приведённом примере условие iFib_Next Цикл «Do Until» в Visual Basic

Цикл Do Until очень похож на цикл Do While: блок кода в теле цикла выполняется раз за разом до тех пор, пока заданное условие выполняется (результат условного выражения равен True). В следующей процедуре Sub при помощи цикла Do Until извлекаются значения из всех ячеек столбца A рабочего листа до тех пор, пока в столбце не встретится пустая ячейка:

В приведённом выше примере условие IsEmpty(Cells(iRow, 1)) находится в начале конструкции Do Until, следовательно цикл будет выполнен хотя бы один раз, если первая взятая ячейка не пуста.

Однако, как было показано в примерах цикла Do While, в некоторых ситуациях нужно, чтобы цикл был выполнен хотя бы один раз, не зависимо от первоначального результата условного выражения. В таком случае условное выражение нужно поместить в конце цикла, вот так:

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Перевел: Антон Андронов

Правила перепечаткиЕще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

Добрый день!
Неделю пытаюсь разобраться с макросами в Excel — выходит признаюсь честно плохо…
Решение задачи так и не нашла. Надеюсь вы сумеете мне подсказать куда конкретнее направить свою активность.

Задача передо мной стоит такая:

ячейка A1 содержит значение, которое я с помощью формул разбиваю на диапазон ячеек (задействовано 276 ячеек) целыми числами. Но при разбивке образуется дельта округления. Так вот мне необходимо эту дельту целыми числами доразнести в уже заполненные формулами ячейки например по порядку.
Например если дельта = 117, а диапазон 276, то в первые 117 ячеек прибавляем по 1, а остальные не трогаем.

Подскажите, пожалуйста, возможно ли вообще это описать для Excel?

Ссылка на основную публикацию