Как установить переменную как номер строки в VBA?
У меня есть код, который вставляет строку в конец раздела, а затем копирует формулы сверху.
Моя единственная проблема в том, что я не уверен, как определить такую переменную, как «iRow», как динамический диапазон.
Код ниже — это часть, которая копирует формулы только из строки выше. Если я установлю iRow как фиксированное число, весь код будет работать. Однако мне нужно, чтобы переменная «iRow» принимала любой номер строки, в которой значение «2» можно найти в столбце B.
Я пробовал такие вещи, как Столбцы («B: B»). Найти (What: = 2).
2 ответа
Чтобы ответить на ваш вопрос:
«Однако мне нужно, чтобы переменная« iRow »принимала любой номер строки, в котором значение« 2 »можно найти в столбце B.»
Вам, вероятно, нужно что-то вроде:
Это получит номер строки первого вхождения 2. Если не найдено значение два, это приведет к ошибке.
Если вам нужен динамический счетчик строк, вам нужен счетчик. с помощью приведенного ниже кода, если вы, например, установите для столбца значение B и используете счетчик, он всегда будет искать последнюю строку.
Я также объявил бы рабочую книгу и рабочий лист, но в этом примере я оставил это.
excel: динамическое изменение адреса ячейки (суммирование по вычисляемому адресу)
Стоит задача так написать формулу сложения содержимого ячеек, чтобы адреса ячеек были не фиксированными, а вычислялись в зависимости от содержимого других ячеек.
Как это сделать?
А я хочу что-то типа такого
![]()
Ищем начало диапазона — смещаем ссылку с A1 вниз на B1*10. По столбцам смещения нет, задаем размер диапазона — 10 строк, 1 столбец. Суммируем значения полученного диапазона.
Формула простая, короткая и понятная, но имеет один большой недостаток. Функция СМЕЩ — одна из немногих летучих (volatile) — пересчитывается не только при изменении входных данных, но и при любых изменениях на листе, а это может стать причиной торможения вычислений.
Вариант немного сложнее, но лучше.
Две функции указывают на начало и конец диапазона: со строки B1*10+1 до строки B1*10+10.
Такая формула частично летуча — она пересчитывается только при открытии книги (для определения динамического диапазона). В открытой книге пересчет происходит только при изменении входных данных.
Как в Excel в формуле одну часть сделать переменной, а другую постоянной?
Чтобы было понятно, проведём небольшую тренировку. Напишите в какой-либо ячейке формулу, например такую =(A1-C1)/B1. Теперь "встаньте в эту ячейку", нажмите клавишу F2 (включается режим редактирования формул непосредственно в ячейке). В ячейке появится формула и курсор (в виде палочки). Переместите курсор по ячейке так, чтобы он находился либо рядом с тем адресом, которым Вы хотите управлять (в данном случае B1), либо непосредственно внутри адреса, т.е. либо так =(A1-C1)/|B1, либо так (A1-C1)/B1|, либо так (A1-C1)/B|1.
Нажмите клавишу F4. Формула примет вид =(A1-C1)/$B$1.
Нажмите клавишу F4 ещё раз. Формула примет вид =(A1-C1)/B$1.
Нажмите клавишу F4 ещё раз. Формула примет вид =(A1-C1)/$B1.
Нажмите клавишу F4 ещё раз. Формула примет первоначальный вид =(A1-C1)/B1.
Нажмите клавишу F4 ещё раз. Формула примет вид =(A1-C1)/$B$1. И так далее по кругу.
Итак, имеется 4 представления адреса B1, $B$1, B$1, $B1. Значок доллара $ означает, что следующий за ним элемент адреса при копировании формулы не будет изменяться.
Если в формуле записано B1, то при копировании формулы могут изменяться и название столбца и номер строки.
Если записано $B$1, то при копировании формулы не будут изменяться ни название столбца ни номер строки.
Если записано B$1 то при копировании формулы название столбца будет изменяться, а номер строки изменяться не будет.
Если записано $B1 то при копировании формулы номер строки будет изменяться, а название столбца изменяться не будет.