предположим, что я:
- значение 5 в
B1
- Я хочу передать число (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
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Группа: Пользователи Ранг: Прохожий Сообщений: 4
Замечаний: |
Здравствуйте, подскажите. На листе есть ячейка с формулой
Код
=СЧЁТЕСЛИ(ВторойЛист!$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
58k11 gold badges85 silver badges137 bronze badges
asked Sep 11, 2012 at 16:09
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
JDunkerleyJDunkerley
12.3k5 gold badges41 silver badges45 bronze badges
6
Помогаю со студенческими работами здесь
Присвоение значения переменной из строки другого файла
Есть текстовый файл в сетевой папке \ServerShara1.txt
Как скрипту VBS взять значение для…
Чтение N-ной строки из файла и её присвоение переменной
нужно в переменную %perem% зафигучить содержимое файла (текст, 4-5 строчек)
туплю.
не работает:…
Присвоение переменной в качестве значения первой строки файла
cmd
подскажите каким образом написать присвоение переменной значения из файла.
Есть текстовый…
Циклическое последовательное присвоение переменной значений, содержащих строки текстового файла
Здравствуйте, исполняется следующий bat-код:
set "root=e:data"
for /f "usebackq delims=" %%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 и используете счетчик, он всегда будет искать последнюю строку.
Я также объявил бы рабочую книгу и рабочий лист, но в этом примере я оставил это.
Стоит задача так написать формулу сложения содержимого ячеек, чтобы адреса ячеек были не фиксированными, а вычислялись в зависимости от содержимого других ячеек.
Как это сделать?
А я хочу что-то типа такого
Ищем начало диапазона — смещаем ссылку с 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 то при копировании формулы номер строки будет изменяться, а название столбца изменяться не будет.