Как зацикливать в excel без VBA или макросов?
Можно ли перебирать (цикл) группу строк в Excel без установки VBA или макросов? Google не принес ничего полезного.
=IF('testsheet'!$C$1 <= 99,'testsheet'!$A$1,"") &
IF('testsheet'!$C$2 <= 99, 'testsheet'!$A$2,"") &
IF('testsheet'!$C$3 <= 99, 'testsheet'!$A$3,"") &
... and so on through !$C$40, !$A$40 ...
Как бы то ни было, мне придется повторить вышеуказанный код 40 раз в каждой ячейке, и у меня есть более 200 ячеек, которым нужен код. сопение
Я хорошо разбираюсь в PHP/SQL, но просто изучаю Excel.
Ответы
Ответ 1
Способ получения результатов вашей формулы должен начинаться с нового листа.
В ячейке A1 поместите формулу
=IF('testsheet'!C1 <= 99,'testsheet'!A1,"")
Скопируйте эту ячейку до строки 40
В ячейке B1 поместите формулу
=A1
В ячейке B2 поместите формулу
=B1 & A2
Скопируйте эту ячейку до строки 40.
Значение, которое вы хотите, теперь находится в этом столбце в строке 40.
Не тот ответ, который вы хотите, но это самый быстрый способ добиться успеха, не создавая настраиваемую формулу, которая принимает диапазон и делает расчет (что было бы более интересно сделать).
Ответ 2
Я просто искал что-то похожее:
Я хочу суммировать каждый нечетный столбец строки.
SUMIF
имеет ДВА возможных диапазона, диапазон для суммирования и диапазон для рассмотрения критериев.
SUMIF(B1:B1000,1,A1:A1000)
Эта функция будет учитывать, если ячейка в диапазоне B равна "= 1", она будет суммировать соответствующую ячейку A, только если она есть.
Чтобы получить "= 1" для возврата в диапазон B, я поместил это в B:
=MOD(ROWNUM(B1),2)
Затем автоматически заполняется, чтобы получить модуль для заполнения, вы можете поместить и вычислить критерии здесь, чтобы получить условия SUMIF или SUMIFS, которые вам нужно пройти по каждой ячейке.
Проще, чем ARRAY, и скрывает заднюю часть петель!
Ответ 3
Собираюсь ответить на это сам (исправьте меня, если я ошибаюсь):
Невозможно выполнить итерацию по группе строк (например, массив) в Excel без установки VBA/макросов.
Ответ 4
Вы можете создать таблицу где-нибудь в электронной таблице расчета, которая выполняет эту операцию для каждой пары ячеек, и использовать автозаполнение, чтобы заполнить ее.
Совокупность результатов из этой таблицы в ячейку результатов.
200 таких ячеек, которые ссылаются на результаты, могут затем ссылаться на ячейку, которая содержит результаты агрегирования. В новейших версиях excel вы можете назвать ячейку результатов и ссылаться на нее таким образом, чтобы упростить чтение.
Ответ 5
Добавьте больше столбцов, если у вас есть переменные циклы, которые повторяются с разной скоростью. Я не уверен точно, что вы пытаетесь сделать, но я думаю, что сделал что-то, что можно было применить.
Создание одного цикла в Excel довольно просто. Это на самом деле делает работу для вас. Попробуйте это в новой книге
- Введите "1" в A1
- Введите "= A1 + 1" в A2
A3 автоматически будет "= A2 + 1" при перетаскивании. Первые шаги не обязательно должны быть явными. Excel автоматически распознает шаблон и подсчет, если вы просто поместите "2" в A2, но если мы хотим, чтобы B1-B5 был "100", а B5-B10 равным "200" (подсчет таким же образом), вы можете понять, почему зная, как это делать прямо. В этом случае вы просто вводите:
- "100" в B1, перетащите на B5 и
- "= B1 + 100" в B6
B7 автоматически будет "= B2 + 100" и т.д. при перетаскивании, поэтому в основном он увеличивается каждые 5 строк бесконечно. Чтобы сделать цикл чисел 1-5 в столбце A:
- Введите "= A1" в ячейке A6. При перетаскивании автоматически будет "= A2" в ячейке A7 и т.д. Из-за того, как Excel делает вещи.
Итак, теперь у нас есть столбец A, повторяющий числа 1-5, в то время как столбец B увеличивается на 100 каждые 5 ячеек. Вы можете сделать повторение столбца B, например, номера 100-900, используя тот же метод, что и с столбец А, как способ создания, например, каждой возможной комбинации с несколькими переменными. Перетащите столбцы, и они сделают это бесконечно. Я явно не рассматриваю данный сценарий, но если вы выполните шаги и поймете их, концепция должна дать вам ответ на проблему, которая включает в себя добавление большего количества столбцов и взаимодействие или использование их в качестве ваших переменных.
Ответ 6
@Nat дал хороший ответ. Но поскольку нет способа сократить код, почему бы не использовать контактен для "генерации" необходимого вам кода. Это работает для меня, когда я ленивый (при наборе всего кода в ячейке).
Поэтому нам нужно просто определить шаблон> использовать Excel для построения шаблона 'структура'> добавить "=" и вставить его в нужную ячейку.
Например, вы хотите достичь (я имею в виду, введите в ячейку):
=IF('testsheet'!$C$1 <= 99,'testsheet'!$A$1,"") &IF('testsheet'!$C$2 <= 99,'testsheet'!$A$2,"") &IF('testsheet'!$C$3 <= 99,'testsheet'!$A$3,"") &IF('testsheet'!$C$4 <= 99,'testsheet'!$A$4,"") &IF('testsheet'!$C$5 <= 99,'testsheet'!$A$5,"") &IF('testsheet'!$C$6 <= 99,'testsheet'!$A$6,"") &IF('testsheet'!$C$7 <= 99,'testsheet'!$A$7,"") &IF('testsheet'!$C$8 <= 99,'testsheet'!$A$8,"") &IF('testsheet'!$C$9 <= 99,'testsheet'!$A$9,"") &IF('testsheet'!$C$10 <= 99,'testsheet'!$A$10,"") &IF('testsheet'!$C$11 <= 99,'testsheet'!$A$11,"") &IF('testsheet'!$C$12 <= 99,'testsheet'!$A$12,"") &IF('testsheet'!$C$13 <= 99,'testsheet'!$A$13,"") &IF('testsheet'!$C$14 <= 99,'testsheet'!$A$14,"") &IF('testsheet'!$C$15 <= 99,'testsheet'!$A$15,"") &IF('testsheet'!$C$16 <= 99,'testsheet'!$A$16,"") &IF('testsheet'!$C$17 <= 99,'testsheet'!$A$17,"") &IF('testsheet'!$C$18 <= 99,'testsheet'!$A$18,"") &IF('testsheet'!$C$19 <= 99,'testsheet'!$A$19,"") &IF('testsheet'!$C$20 <= 99,'testsheet'!$A$20,"") &IF('testsheet'!$C$21 <= 99,'testsheet'!$A$21,"") &IF('testsheet'!$C$22 <= 99,'testsheet'!$A$22,"") &IF('testsheet'!$C$23 <= 99,'testsheet'!$A$23,"") &IF('testsheet'!$C$24 <= 99,'testsheet'!$A$24,"") &IF('testsheet'!$C$25 <= 99,'testsheet'!$A$25,"") &IF('testsheet'!$C$26 <= 99,'testsheet'!$A$26,"") &IF('testsheet'!$C$27 <= 99,'testsheet'!$A$27,"") &IF('testsheet'!$C$28 <= 99,'testsheet'!$A$28,"") &IF('testsheet'!$C$29 <= 99,'testsheet'!$A$29,"") &IF('testsheet'!$C$30 <= 99,'testsheet'!$A$30,"") &IF('testsheet'!$C$31 <= 99,'testsheet'!$A$31,"") &IF('testsheet'!$C$32 <= 99,'testsheet'!$A$32,"") &IF('testsheet'!$C$33 <= 99,'testsheet'!$A$33,"") &IF('testsheet'!$C$34 <= 99,'testsheet'!$A$34,"") &IF('testsheet'!$C$35 <= 99,'testsheet'!$A$35,"") &IF('testsheet'!$C$36 <= 99,'testsheet'!$A$36,"") &IF('testsheet'!$C$37 <= 99,'testsheet'!$A$37,"") &IF('testsheet'!$C$38 <= 99,'testsheet'!$A$38,"") &IF('testsheet'!$C$39 <= 99,'testsheet'!$A$39,"") &IF('testsheet'!$C$40 <= 99,'testsheet'!$A$40,"")
Я не набрал его, я просто использовал символ "&" для объединения упорядоченной ячейки в Excel (другой файл, а не файл, над которым мы работаем).
Заметить, что:
part1> IF('testsheet'!$C$
часть2> 1 to 40
part3> <= 99,'testsheet'!$A$
part4> 1 to 40
part5> ,"") &
- Введите часть 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, чтобы помочь мне генерировать код для моих проектов. Работает для меня, надеюсь, это помогает другим. (: