Excel номер строки как переменная

предположим, что я:

  1. значение 5 в B1
  2. Я хочу передать число (5) в B1 Как переменная строки, которая будет считываться в сочетании со столбцом A в другую ячейку (скажем C1) как » =A (B1)», т. е. «=A5»

как бы я это сделал?

3 ответов


предполагая, что ваш номер строки находится в B1, вы можете использовать INDIRECT:

=INDIRECT("A" & B1)

это принимает ссылку на ячейку в виде строки (в этом случае конкатенация A и значение B1 — 5), и возвращает значение в этой ячейке.



альтернативой является использование OFFSET:

предполагая, что значение столбца хранится в B1, вы можете использовать следующее

C1 = OFFSET(A1, 0, B1 - 1)

работает:

a) взятие базовой ячейки (A1)
b) добавление 0 в строку (сохраняя ее как A)
c) добавление (A5 — 1) в колонку

вы также можете использовать другое значение вместо 0 если вы хотите изменить значение строки.


ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
20% ±


Здравствуйте, подскажите. На листе есть ячейка с формулой

Код

=СЧЁТЕСЛИ(ВторойЛист!$EB$8:$EB$20000;»да»)

— считается количество ячеек с другого листа по условию. Как можно в формуле номер последней строки в столбце (20000) заменить переменной, которая будет записана например в ячейке B2 первого листа? Пробую написать

Код

=СЧЁТЕСЛИ(ВторойЛист!$EB$8:$EB$&B2;»да»)

, но выдает ошибку….

Сообщение отредактировал Serge_007Пятница, 09.09.2022, 13:01

I have a spreadsheet that has 2 columns, the first is a unique identifier, the second is a list delineated by the ‘|’ character of people assigned to that case. I am attempting to write a macro that uses text to columns to break out the second column into multiple columns and then copy them all with the corresponding identifier to the bottom of the original columns. I am dealing with about 46,000 rows, and the result will have around 70,000 I would guess. An example is as follows:

Original Data

ColumnA ColumnB  
123     Adam | Jill | Bob
456     Brent | Bob | Betsy | Sam
789     Matt | Adam | Jill

Needed Data

ColumnA ColumnB 
123     Adam
456     Brent
789     Matt
123     Jill
456     Bob
789     Adam
123     Bob
456     Betsy
789     Jill
456     Sam

pnuts's user avatar

pnuts

58k11 gold badges85 silver badges137 bronze badges

asked Sep 11, 2012 at 16:09

Liquidgenius's user avatar

I think this should do what you want:

Sub test()
    Dim inputRng As Range
    Set inputRng = ThisWorkbook.Sheets(1).Range("A1")

    Dim outputRng As Range
    Set outputRng = ThisWorkbook.Sheets(1).Range("D1")

    While inputRng.Value <> ""
        Dim names As Variant
        names = Split(inputRng.Offset(, 1).Value, "|")

        For Each nme In names
            outputRng.Value = inputRng.Value
            outputRng.Offset(, 1).Value = Trim(nme)
            Set outputRng = outputRng.Offset(1)
        Next

        Set inputRng = inputRng.Offset(1)
    Wend
End Sub

Adjust the inputRng and outputRng to point where you want

All the code does is split the string value in VBA and iterate over that list then move down onto the next row. It keeps going until it finds an empty (Value == «») cell and then stops.

answered Sep 11, 2012 at 16:23

JDunkerley's user avatar

JDunkerleyJDunkerley

12.3k5 gold badges41 silver badges45 bronze badges

6

Помогаю со студенческими работами здесь

Присвоение значения переменной из строки другого файла
Есть текстовый файл в сетевой папке \ServerShara1.txt
Как скрипту VBS взять значение для…

Чтение N-ной строки из файла и её присвоение переменной
нужно в переменную %perem% зафигучить содержимое файла (текст, 4-5 строчек)
туплю.
не работает:…

Присвоение переменной в качестве значения первой строки файла
cmd
подскажите каким образом написать присвоение переменной значения из файла.
Есть текстовый…

Циклическое последовательное присвоение переменной значений, содержащих строки текстового файла
Здравствуйте, исполняется следующий bat-код:

set &quot;root=e:data&quot;

for /f &quot;usebackq delims=&quot; %%A…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

I have the following column (column A) named project (rows column is just displaying the row number):

rows    project
1       14
2       15
3       16
4       17
5       18
6       19
7       ProjTemp
8       ProjTemp
9       ProjTemp

I have an input message box where the user writes the new project name which I want inserted right after the last one. Ex: project 20 will be inserted right after project 19 and before the first «ProjTemp».

My theory was to locate the row number of the first «ProjTemp» and then insert a new row where the project is 20.

I was trying to use the Find function but I’m getting an overflow error (I’m sure I’m getting it because it’s finding 3 «ProjTemp» strings and trying to set it to one parameter):

Dim FindRow as Range

with WB.Sheets("ECM Overview")
    Set FindRow = .Range("A:A").Find(What:="ProjTemp", _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False)
end with

How do I code this so I only find the row number of the fist «ProjTemp»?
Is there a better way to do this, maybe a loop?

Thanks, any help will be appreciated!

Как установить переменную как номер строки в VBA?

У меня есть код, который вставляет строку в конец раздела, а затем копирует формулы сверху.

Моя единственная проблема в том, что я не уверен, как определить такую ​​переменную, как «iRow», как динамический диапазон.

Код ниже — это часть, которая копирует формулы только из строки выше. Если я установлю iRow как фиксированное число, весь код будет работать. Однако мне нужно, чтобы переменная «iRow» принимала любой номер строки, в которой значение «2» можно найти в столбце B.

Я пробовал такие вещи, как Столбцы («B: B»). Найти (What: = 2).

2 ответа

Чтобы ответить на ваш вопрос:

«Однако мне нужно, чтобы переменная« iRow »принимала любой номер строки, в котором значение« 2 »можно найти в столбце B.»

Вам, вероятно, нужно что-то вроде:

Это получит номер строки первого вхождения 2. Если не найдено значение два, это приведет к ошибке.

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

Я также объявил бы рабочую книгу и рабочий лист, но в этом примере я оставил это.

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

Как это сделать?

А я хочу что-то типа такого

user avatar

Ищем начало диапазона — смещаем ссылку с 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 то при копировании формулы номер строки будет изменяться, а название столбца изменяться не будет.

Like this post? Please share to your friends:
  • Excel номер строки как аргумент
  • Excel номер строки в умной таблице
  • Excel номер строки буквами
  • Excel номер страницы ячейки
  • Excel номер страницы на всех листах