Чтение и запись значения ячейки в VBA
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.

Еще больше полезных приемов в работе со списками данных и функциями в Excel вы узнаете в практическом курсе «От новичка до мастера Excel«. Успей зарегистрироваться по ссылке!
Работа с ячейками в Excel. Разделение и объединение ячеек Excel
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
Для работы с кодами символов Excel предоставляет две специальные функции: КОДСИМВ и СИМВОЛ. Несмотря на то, что эти функции не столь популярны, как остальные, они пригодятся при совместном использовании с другими функциями.
11 ответов
«RC[-1]» означает один столбец слева. «R[1]C[-1]» находится внизу слева.
второй параметр 0 означает, что первый параметр интерпретируется с использованием нотации R1C1.
слишком долго на мой взгляд. Но полезно, если относительное значение является динамическим / производным от другой ячейки. например:
имеет недостаток, что вам нужно включить нотацию R1C1 с помощью опций, которая не работает, когда другие люди должны использовать excel.
при создании условного форматирования установите диапазон, к которому он применяется к тому, что вы хотите (весь лист), затем введите относительные формула (удалить $ знаки), как если бы вы только форматировали верхний левый угол.
Excel будет правильно применять форматирование к остальным ячейкам соответственно.
в этом примере, начиная с B1,левый ячейки А1. Просто используйте это—нет расширенной формулы требуемый.
если вы ищете что-то более продвинутое, вы можете поиграть с column() , row() и indirect(. ) .
Если вы измените ссылку на ячейку, чтобы использовать нотацию R1C1 (Инструменты|Параметры, вкладка «Общие»), вы можете использовать простую нотацию и вставить ее в любую ячейку.
заполните ячейку A1, по следующей формуле :
если смещение находится вне диапазона доступной ячейки, вы получаете #REF! ошибка.
Так, например, вы можете записать в ячейку B2:
еще спасибо Джейсон Янг!! Я бы никогда не придумал это решение без вашего ответа!
при создании Пользовательская Функция, я узнал, что другие ответы, связанные с функциями OFFSET и INDIRECT не могут быть применены.
вместо этого вы должны использовать Application.Caller для ссылки на ячейку была использована пользовательская функция (UDF). На втором шаге индекс столбца преобразуется в имя соответствующего столбца.
Наконец, вы можете ссылаться на левую ячейку, используя
вы можете использовать скрипт VBA, который изменяет Условное форматирование выделения (возможно, вам придется соответствующим образом настроить условие и форматирование):
OFFSET возвращает ссылку относительно текущей ссылки, поэтому, если indirect возвращает правильную ссылку, она вам не нужна.
я наткнулся на эту тему, потому что я хотел всегда ссылаться на «ячейку слева», но принципиально энергонезависимым образом (без смещения, косвенных и подобных катастроф). Смотрю на паутину сверху донизу, ответов нет. (Этот поток на самом деле не дает ответа.) После некоторых возиться я наткнулся на самый удивительный метод, который я хотел бы поделиться с этим сообществом:
предположим, что начальное значение 100 в E6. Предположим, я ввожу дельту к этому значению в F5, скажем 5. Затем мы вычисляем значение продолжения (105) в F6 = E6+F5. Если вы хотите добавить еще один шаг, легко: просто скопируйте столбец F в столбец G и введите новую дельту в G5.
чтобы сделать эту работу, мы можем запутать этот банальный расчет самым удивительным образом F6=index ($E6:F6;1;columns ($E1:F1)-1)+F5. Скопируйте справа, и вы получите G6=index ($E6:G6;1;columns ($E1:G1)-1)+G5.
Это не должно работать, верно? Круговая ссылка, ясно! Попробовать его и быть поражены. Excel, похоже, понимает, что, хотя диапазон индексов охватывает ячейку, которую мы пересчитываем, сама ячейка не адресуется индексом и, следовательно, не создает круговую ссылку.
Итак, теперь я дома и сухой. Вставьте столбец между F и G, и мы получим именно то, что нам нужно: значение продолжения в старом H будет ссылаться на значение продолжения, которое мы вставили в новый G.

Как сравнить два столбца в Excel на совпадения — ЭКСЕЛЬ ХАК
Функция ДЛСТР принимает только один аргумент и возвращает количество символов, содержащихся в ячейке. Возьмем, например, ячейку А1, содержащую строку Продажи в сентябре. Формула, приведенная ниже, вернет значение 18.