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

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

=IF('testsheet'!$C <= 99,'testsheet'!$A,"") &
IF('testsheet'!$C <= 99, 'testsheet'!$A,"") &
IF('testsheet'!$C <= 99, 'testsheet'!$A,"") &
... and so on through !$C, !$A ...

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

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

6 ответов


путь получить результаты Вашей формулы был бы начать в новом листе.

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

=IF('testsheet'!C1 <= 99,'testsheet'!A1,"") 

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

=A1

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

=B1 & A2

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

значение, которое вы хотите сейчас в этом столбце в строке 40.

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


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

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

SUMIF имеет два возможных диапазона, диапазон до сумма и в рассмотреть критерии in.

SUMIF (B1:B1000,1,A1:A1000)

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

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

=MOD(ROWNUM (B1),2)

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

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


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

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


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

Агрегируйте результаты из этой таблицы в ячейку результатов.

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


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

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

  1. введите " 1 " в A1
  2. введите "=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 " etc. как вы перетащите вниз, так что в основном он увеличивается каждые 5 ряды бесконечны. Чтобы сделать цикл чисел 1-5 в столбце A:

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

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


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

Итак, нам нужно просто определить шаблон > использовать excel для создания шаблона "структура" > добавить " = " и вставить его в предполагаемую ячейку.

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

=IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") &IF('testsheet'!$C <= 99,'testsheet'!$A,"") 

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

обратите внимание, что :

часть 1>IF('testsheet'!$C$

часть 2>1 to 40

часть 3><= 99,'testsheet'!$A$

part4 > 1 to 40

part5 > ,"") &

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

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

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

Result = код, как вы намеревались.

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