Содержание
- Чтение и запись значения ячейки в VBA
- Обращение к конкретной ячейке
- Чтение значения из ячейки
- Запись значения в ячейку
- Функция ЯЧЕЙКА в Excel и примеры ее использования
- Функция значения и свойства ячейки в Excel
- Как работает функция ЯЧЕЙКА в Excel?
- Примеры использования функции ЯЧЕЙКА в Excel
- Как узнать ширину таблицы Excel?
- Как получить значение первой ячейки в диапазоне
- VBA Excel. Ячейки (обращение, запись, чтение, очистка)
- Обращение к ячейке по адресу
- Обращение к ячейке по индексу
- Обращение к ячейке по имени
- Запись информации в ячейку
- Извлечение информации о ячейке функцией ЯЧЕЙКА (CELL)
- 1.Создание пользовательской функции
- 2.Использование пользовательской функции
Чтение и запись значения ячейки в VBA
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
- С помощью Range
- С помощью Cells
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Все три строки запишут в A1 одно и то же значение.
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Источник
Функция ЯЧЕЙКА в Excel и примеры ее использования
Очень часто при работе в Excel необходимо использовать данные об адресации ячеек в электронной таблице. Для этого была предусмотрена функция ЯЧЕЙКА. Рассмотрим ее использование на конкретных примерах.
Функция значения и свойства ячейки в Excel
Стоит отметить, что в Excel используются несколько функций по адресации ячеек:
Функция ЯЧЕЙКА(), английская версия CELL(), возвращает сведения о форматировании, адресе или содержимом ячейки. Функция может вернуть подробную информацию о формате ячейки, исключив тем самым в некоторых случаях необходимость использования VBA. Функция особенно полезна, если необходимо вывести в ячейки полный путь файла.
Как работает функция ЯЧЕЙКА в Excel?
Функция ЯЧЕЙКА в своей работе использует синтаксис, который состоит из двух аргументов:
- Тип_сведений – текстовое значение, задающее требуемый тип сведений о ячейке. При вводе функции вручную высвечивается выпадающий список где указаны все возможные значения аргумента «тип сведений»:
- Ссылка – необязательный аргумент. Ячейка, сведения о которой требуется получить. Если этот аргумент опущен, сведения, указанные в аргументе тип_сведений, возвращаются для последней измененной ячейки. Если аргумент ссылки указывает на диапазон ячеек, функция ЯЧЕЙКА() возвращает сведения только для левой верхней ячейки диапазона.
Примеры использования функции ЯЧЕЙКА в Excel
Пример 1. Дана таблица учета работы сотрудников организации вида:
Необходимо с помощью функции ЯЧЕЙКА вычислить в какой строке и столбце находится зарплата размером 235000 руб.
Для этого введем формулу следующего вида:
- – «строка» и «столбец» – параметр вывода;
- – С8 – адрес данных с зарплатой.
В результате вычислений получим: строка №8 и столбец №3 (С).
Как узнать ширину таблицы Excel?
Пример 2. Нужно вычислить ширину таблицы в символах. Сразу стоит отметить что в Excel по умолчанию ширина столбцов и ячеек измеряется в количестве символов, которые они умещают в своем значении доступны для отображения в ячейке без переноса строки.
Примечание. Высота строк и ячеек в Excel по умолчанию измеряется в единицах измерения базового шрифта – в пунктах pt. Чем больше шрифт, тем выше строка для полного отображения символов по высоте.
Введем в ячейку С14 формулу для вычисления суммы ширины каждого столбца таблицы:
- – «ширина» – параметр функции;
- – А1 – ширина определенного столбца.
Как получить значение первой ячейки в диапазоне
Пример 3. В условии примера 1 нужно вывести содержимое только из первой (верхней левой) ячейки из диапазона A5:C8.
Введем формулу для вычисления:
Описание формулы аналогичное предыдущим двум примерам.
Источник
VBA Excel. Ячейки (обращение, запись, чтение, очистка)
Обращение к ячейке на листе Excel из кода VBA по адресу, индексу и имени. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке по адресу
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range(«A1:C3»).Cells(5) соответствует выражению Range(«B2») .
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range(«Итого») .
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Источник
Извлечение информации о ячейке функцией ЯЧЕЙКА (CELL)
Иногда бывает необходимо с помощью формул узнать о какой-либо ячейке подробную информацию и параметры, чтобы использовать это в расчетах. Например, выяснить число или текст в ячейке или какой числовой формат в ней установлен. Сделать это можно, используя функцию ЯЧЕЙКА (CELL) .
Синтаксис у функции следующий:
=ЯЧЕЙКА( Параметр ; Адрес )
где Адрес — это, понятное дело, ссылка на нужную ячейку, а вот Параметр — это кодовое слово, определяющее какую именно информацию о ячейке мы хотим получить. У этого аргумента несколько возможных значений:
Давайте рассмотрим пару трюков с применением этой функции на практике.
Например, можно получить имя текущего листа формулой, используя функцию ЯЧЕЙКА с параметром «имяфайла» и извлекающей все символы правее закрывающей квадратной скобки:
Также можно проверить тип данных в ячейке (параметр «тип») и выводить сообщение об ошибке вместо вычислений, если введен текст или ячейка пуста:
Или подсветить условным форматированием все незащищенные ячейки в заданном диапазоне:
Источник
Здраствуйте. Сегодня мы изучим возможность извлечения текста из примечания в ячейку Excel. Может случиться ситуация, когда Вам предоставили файл, где нужные сведения содержатся не в самих ячейках, а в примечаниях к ним. К примеру, Ваш руководитель оставил свои комментарии по прогнозу объема продаж в виде примечаний и Вам нужно сделать сравнение между тем прогнозом, что сделали Вы и Ваш руководитель. Можно конечно руками перебить все значения из примечаний в ячейки, но если таких случаев много – тогда наша инструкция придет на помощь.
К сожалению, встроенной формулы в Экселе на этот случай нет, но нам поможет Visual Basic for Application. В пошаговой инструкции я расскажу Вам, как создать пользовательскую функцию и как ее использовать. Итак, пункт первый:
1.Создание пользовательской функции
Function Get_Text_from_Comment(rCell As Range) As String
Dim sTxt As String
Application.Volatile True
On Error Resume Next
sTxt = rCell.Comment.Text
Get_Text_from_Comment = Mid(sTxt, InStr(sTxt, «:») + 2)
End Function
2.Использование пользовательской функции
- Перейдите назад в книгу Excel.
- Выделите любую свободную ячейку и вызовите мастер вставки функции
- Перейдите в категорию «Определенные пользователем», выберите функцию Get_Text_from_Comment и нажмите Ок.
- Далее укажите ту ячейку, которая содержит комментарий и нажмите Ок.
Готово. Мы получили текст из примечания в ячейку.
Важное замечание: Если Вы изменили текст примечания, то нажмите после этого F9, для того что бы обновилось содержание ячейки в соответствии с корректировкой примечания.
Не забывайте оставлять Ваши комментарии. Они очень важны для нас.
Источник
МЕНЮ
Руководство пользователя
Установка, начало работы
Глоссарий
Переменные
Параметры скрипта
XPath
Рекомендации по настройке роботов
Релизы | Release notes
Работа с Citrix
Регулярные выражения
Где найти логи?
Работа с Sap Control Element
FlaUInspect
Дерево XPath
PIX BI
Что такое PIX BI
Лицензирование
Системные требования
Установка PIX BI
Обновление PIX BI
Модель данных
Создание дашборда
Changelog
Установка ClickHouse на Linux
Установка PostgreSQL на Linux
Активация лицензий
Установка PIX BI 1.23.227
Часто задаваемые вопросы по установке
PIX PS
Что такое PIX PS
Системные требования
PIX Studio
Системные требования
Описание
Интерфейс студии
Горячие клавиши
Активация
Конкурентная лицензия
Деактивация лицензии
Как добавить платформу PIX в исключения антивируса Dr. Web?
Настройки
Установка расширения Chrome
Web-драйвер Selenium
Разработка собственных активностей
Работа с Git
Подключение к PIX Master
Проект
Шаблон проекта
Загрузка/выгрузка проектов
Подключение к Базе Данных
Конвертер с UiPath на PIX
Типы данных
PIX Agent Host
PIX Master
Системные требования
Архитектура PIX Master
Настройка и использование
Установка PIX Master
Монитор
Агент
Загрузка проекта
Создание задачи
Процессы
Логирование
Создание пользователей
Роли
Аудит
Группы пользователей
Удержание сессии RDP
Данные
Администратор
Активация лицензии Мастер
Обновление PIX Master
Активация конкурентных лицензии
Очереди данных
Очереди задач
API к PIX Master
RabbitMQ
Машины
Подключение почтового сервера
Машины Установка службы управления агентами
Планировщик
Мягкая остановка
Режим обслуживания
Робот
Параметры запуска
Запуск Robot.exe через планировщик Windows
Работа робота в свернутом окне RDP
Примеры роботов
Запрос к 1С
Работа с таблицами
Windows Credential
Отправка писем
Строки (Регулярные выражения)
Парсинг JSON
Web Scraping
Заполнение таблицы в документе Word
Базовые активности
Случайное значение
Присвоить значение
Цикл — Прервать цикл
Цикл — Продолжить
Цикл с … по …
Цикл — Цикл для каждого
Цикл — Цикл пока…
Комментарий
Контейнер
Выполнить
Выполнить скрипт
Условный оператор
Иначе если
Return
Ожидание
Вызвать исключение
Try/Catch
Try/Fix
Записать лог
Окно ввода
Окно сообщения
Получить дату и время
Сравнить дату и время
Дата и время в виде строки
Изменить дату или время
Перейти на шаг | GoTo step
Выполнить Python код
Active Directory
Соединение с Active Directory
Получить отличительное имя
Получить свойства объекта
Коллекции
Список — Создать список
Список — Поместить объект
Список — Содержит объект?
Список — Преобразовать в строку
Список — Очистить список
Список — Удалить из списка
Словарь — Создать словарь
Словарь — Задать значение ключа
Словарь — Ключ существует?
Словарь — Удалить ключ
Словарь — Значение существует?
Словарь — Очистить словарь
Таблица — Создать таблицу
Таблица — Фильтровать таблицу
Таблица — Сортировать таблицу
Таблица — Добавить столбец
Таблица — Удалить столбец
Таблица — Добавить строку
Таблица — Удалить строку
Таблица — Объединенная таблица
Таблица — Таблица в виде строки
Таблица — Очистить таблицу
Капчи
Решить обычную капчу
Отправка отчета
Буфер обмена
Прочитать из буфера
Сохранить в буфер
Windows credential
Создать учётную запись
Получить данные учётной записи
CSV
Прочитать CSV
Записать в CSV
SQL
Создать подключение к БД
Выборка из БД
Выполнить команду
Сохранить таблицу в базу данных
Клавиатура
Нажать hotkey
Ввести текст с клавиатуры
Смена языка
Windows
Клик по UI-элементу
Скриншот
Проверка существования UI-элемента
Найти UI-элементы на экране
Скрыть/развернуть окно
Получить позицию UI-элемента на экране
Получить текст из UI-элемента
Выделить UI-элемент на экране
Навести курсор мыши на UI-элемент
Впечатать в UI-элемент тест
Ожидать UI-элемент
Прокрутить
Впечатать в UI-элемент SecureString
Фокусировка
Получить свойство
RDP
Клик по RDP-элементу
Проверка существования RDP-элемента
Впечатать в RDP-элемент
Найти RDP-элементы на экране
Получить текст из RDP-элемента
Ожидать RDP-элемент
SAP
Клик по элементу Sap Gui
Проверить существование элемента SAP GUI
Найти элемент SAP GUI
Получить элементы выпадающего списка SAP GUI
Извлечь таблицу SAP GUI
Впечатать в элемент Sap Gui
Получить текст из Sap Gui элемента
Выделить элемент Sap Gui на экране
Выбрать элемент в выпадающем списке SAP GUI
Ожидать элемент SAP GUI
Авторизоваться через Logon
Клик по контекстному меню панели инструментов
Клик по кнопке в панели инструментов
Получить свойство
Получить Email (POP3)
Отправить Email (SMTP)
Получить письма (IMAP)
Переместить письма (IMAP)
Получить вложения
Отправить Email (SMTP)+вложение картинки
Получить письма MS Exchange
Удалить письмо MS Exchange
Получить вложения MS Exchange
Переместить письмо MS Exchange
Отправить письмо MS Exchange
Подключение к Exchange
Сохранить письмо
Файлы
Копировать файл/папку
Удалить файл/каталог
Путь существует?
Прочитать файл
Записать файл
Получить пути к файлам/каталогам
Создать папку
Распаковать
Запаковать
FTP
Создать каталог
Копировать в пределах FTP
Удалить элемент
Путь существует?
Скачать файл
Загрузить файл
Получить список файлов
Google Диск
Настройка сервиса Google Диск
Запустить сервис Google Диск
Копировать файл в Google Диск
Загрузить файл из Google Диск
Экспортировать документ Google
Выгрузить файл в Google Диск
Остановить сервис Google Диск
Google Таблицы
Настройка сервиса Google Таблицы
Очистить диапазон ячеек
Получить названия листов
Закрасить диапазон ячеек
Остановить сервис Google Таблицы
Запустить сервис Google Таблицы
Прочитать ячейку
Прочитать диапазон ячеек
Записать в ячейку
Записать в диапазон ячеек
Google Документы
Настройка сервиса Google Документы
Запустить сервис Google Документы
Заполнить таблицы
Извлечь таблицы
Заменить текст
Остановить сервис Google Документы
HTTP
Отправить запрос
Изображения
Клик по изображению на экране
Найти картинку на экране
Получить изображение
Изображение на экране?
Ожидать изображение на экране
Распознать штрих-коды
Office — Excel общие
Создать стиль
Создать границу
Создать стиль текста
Office — Excel
Очистить/удалить диапазон ячеек
Прочитать ячейку
Прочитать диапазон ячеек
Закрасить диапазон ячеек
Записать в ячейку
Записать в диапазон ячеек
Найти
Установить границы
Добавить комментарий
Считать примечание
Установить стиль
Считать стиль
Добавить / удалить строку
Листы — Добавить новый лист
Листы — Копировать лист
Листы — Список имен листов
Листы — Защитить лист
Листы — Удалить лист
Листы — Переименовать лист
Office — Outlook
Получить вложения
Перемещение письма
Получить письма
Ответить на письмо
Отправить сообщение
Получить список категорий
Задать категорию для писем
Office — Word
Заполнить таблицы в Word
Извлечь таблицы
Прочитать текст из Word
Записать в файл Word
Заменить текст в Word
Сохранить как
Office — Excel interop
Листы — Добавить новый лист
Листы — Копировать лист
Листы — Получить имена листов
Листы — Защитить лист
Листы — Удалить лист
Листы — Переименовать лист
Листы — Снять защиту листа
Открыть excel
Закрыть excel
Дописать диапазон
Создать сводную таблицу
Удалить столбец
Удалить строку
Удалить дубликат
Выделить диапазон
Выделить диапазон
Задать имя диапазону
Удалить | изменить имя диапазона
Парсинг
JSON
XML
Получить свойство JSON элемента
Найти узлы XML
Конвертировать PDF в изображения
Количество страниц
Получить изображения из PDF
Текст из PDF
Выбрать страницы
Объединить PDF файлы
Процессы Windows
Исполнить скрипт PowerShell
Получить список активных процессов
Завершить процессы
Запустить процесс
PIX Master (активности в PIX Studio)
Подтвердить завершение обработки элемента очереди
Получить элемент из очереди
Получить элементы очереди
Поместить элемент в очередь
Отменить элемент очереди
Получить данные из Master
Записать данные в Master
Получить данные из Master в виде SecureString
Обработать элемент из очереди
Установить комментарий элемента
Отложить элемент очереди
OCR
Dbrain
Microsoft Azure
Tesseract
Яндекс Vision
ABBYY Cloud OCR
Получить проекты
Распознать документ
Строки
Заменить подстроку
Строка содержит подстроку?
Представить объект как строку
Подстрока
Получить длину строки
Регулярное выражение
Разделить строку
Очистить строку от пробелов
Классифицировать
Расстояние Левенштейна
Мессенджеры.Telegram
Создать соединение с Telegram
Закрыть соединение Telegram
Скачать файл бота
Отправить файл в чат
Отправить контакт в чат
Отправить фото в чат
Отправить сообщение в чат
Менеджер Telegram
Машинное обучение
Классифицировать данные
Обучить классификационную модель
Предсказать значение
Обучить модель для предсказания значений
WEB
Клик по веб-элементу
Закрыть браузер
Проверить существование элемента
Выполнить код JavaScript
Найти веб-элементы
Получить значение веб-элемента
Назад
Вперед
Запустить Google Chrome
Запустить Internet Explorer
Запустить Firefox
Запустить браузер (Selenium)
Перейти по URL
Обновить
Извлечь данные
Выбрать опцию из списка
Впечатать значение в веб-элемент
Получить список доступных вкладок
Переключиться на вкладку
Получить атрибут
Ожидать web-элемент
Скачать файл
Java
Клик по элементу Java
Впечатать в элемент Java
Получить текст из Java элемента
Найти Java-элементы
Извлечь данные из таблицы Java
Ожидать Java-элемент
1С
Выполнить запрос к 1С
Создать соединение 1С
Закрыть соединение с 1С
Выполнить код 1С
Changelog
PIX Studio
PIX Master
Прочитать ячейку
Активность находится в разделе Office-Excel.
Позволяет получить значение или формулу из указанной ячейки.
Нужную ячейку можно определить двумя способами: через адрес ячейки и через индексы ячейки.
В первом случае необходимо заполнить следующие свойства:
И не забыть ввести в out свойства имя переменной, которая будет хранить считанное значение.
*При определении ячейки через индексы вместо этого свойства задаются номера строки и колонки.
Иногда бывает необходимо с помощью формул узнать о какой-либо ячейке подробную информацию и параметры, чтобы использовать это в расчетах. Например, выяснить число или текст в ячейке или какой числовой формат в ней установлен. Сделать это можно, используя функцию ЯЧЕЙКА (CELL).
Синтаксис у функции следующий:
=ЯЧЕЙКА(Параметр; Адрес)
где Адрес — это, понятное дело, ссылка на нужную ячейку, а вот Параметр — это кодовое слово, определяющее какую именно информацию о ячейке мы хотим получить. У этого аргумента несколько возможных значений:
Давайте рассмотрим пару трюков с применением этой функции на практике.
Например, можно получить имя текущего листа формулой, используя функцию ЯЧЕЙКА с параметром «имяфайла» и извлекающей все символы правее закрывающей квадратной скобки:
Также можно проверить тип данных в ячейке (параметр «тип») и выводить сообщение об ошибке вместо вычислений, если введен текст или ячейка пуста:
Или подсветить условным форматированием все незащищенные ячейки в заданном диапазоне:
Ссылки по теме
- Включение / выключение подсветки незащищенных ячеек макросом
- Условное форматирование в Excel
Извлечение информации о ячейке функцией ЯЧЕЙКА (CELL)
Иногда бывает необходимо с помощью формул узнать о какой-либо ячейке подробную информацию и параметры, чтобы использовать это в расчетах. Например, выяснить число или текст в ячейке или какой числовой формат в ней установлен. Сделать это можно, используя функцию ЯЧЕЙКА (CELL) .
Синтаксис у функции следующий:
=ЯЧЕЙКА( Параметр ; Адрес )
где Адрес — это, понятное дело, ссылка на нужную ячейку, а вот Параметр — это кодовое слово, определяющее какую именно информацию о ячейке мы хотим получить. У этого аргумента несколько возможных значений:
Давайте рассмотрим пару трюков с применением этой функции на практике.
Например, можно получить имя текущего листа формулой, используя функцию ЯЧЕЙКА с параметром «имяфайла» и извлекающей все символы правее закрывающей квадратной скобки:
Также можно проверить тип данных в ячейке (параметр «тип») и выводить сообщение об ошибке вместо вычислений, если введен текст или ячейка пуста:
Или подсветить условным форматированием все незащищенные ячейки в заданном диапазоне:
Функция ЯЧЕЙКА() в MS EXCEL
Функция ЯЧЕЙКА( ) , английская версия CELL(), возвращает сведения о форматировании, адресе или содержимом ячейки. Функция может вернуть подробную информацию о формате ячейки, исключив тем самым в некоторых случаях необходимость использования VBA. Функция особенно полезна, если необходимо вывести в ячейки полный путь файла.
Синтаксис функции ЯЧЕЙКА()
ЯЧЕЙКА(тип_сведений, [ссылка])
тип_сведений— Текстовое значение, задающее требуемый тип сведений о ячейке. В приведенном ниже списке указаны возможные значения аргумента тип_сведений и соответствующие результаты.
ссылка — Необязательный аргумент. Ячейка, сведения о которой требуется получить. Если этот аргумент опущен, сведения, указанные в аргументе тип_сведений, возвращаются для последней измененной ячейки. Если аргумент ссылки указывает на диапазон ячеек, функция ЯЧЕЙКА() возвращает сведения только для левой верхней ячейки диапазона.
Использование функции
В файле примера приведены основные примеры использования функции:
Большинство сведений об ячейке касаются ее формата. Альтернативным источником информации такого рода может случить только VBA.
Самые интересные аргументы это — адрес и имяфайла, которые позволяют быстро вывести в ячейке имени файла и путь к нему. Об этом читайте в статье Нахождение имени текущей книги.
Обратите внимание, что если в одном экземпляре MS EXCEL (см. примечание ниже) открыто несколько книг, то функция ЯЧЕЙКА() с аргументами адрес и имяфайла, будет отображать имя того файла, с который Вы изменяли последним. Например, открыто 2 книги в одном окне MS EXCEL: Базаданных.xlsx и Отчет.xlsx. В книге Базаданных.xlsx имеется формула =ЯЧЕЙКА(«имяфайла») для отображения в ячейке имени текущего файла, т.е. Базаданных.xlsx (с полным путем и с указанием листа, на котором расположена эта формула). Если перейти в окно книги Отчет.xlsx и поменять, например, содержимое ячейки, то вернувшись в окно книги Базаданных.xlsx (CTRL+TAB) увидим, что в ячейке с формулой =ЯЧЕЙКА(«имяфайла») содержится имя Отчет.xlsx. Это может быть источником ошибки. Хорошая новость в том, что при открытии книги функция пересчитывает свое значение (также пересчитать книгу можно нажав клавишу F9). При открытии файлов в разных экземплярах MS EXCEL — подобного эффекта не возникает — формула =ЯЧЕЙКА(«имяфайла») будет возвращать имя файла, в ячейку которого эта формула введена.
Примечание: Открыть несколько книг EXCEL можно в одном окне MS EXCEL (в одном экземпляре MS EXCEL) или в нескольких. Обычно книги открываются в одном экземпляре MS EXCEL (когда Вы просто открываете их подряд из Проводника Windows или через Кнопку Офис в окне MS EXCEL). Второй экземпляр MS EXCEL можно открыть запустив файл EXCEL.EXE, например через меню Пуск. Чтобы убедиться, что файлы открыты в одном экземпляре MS EXCEL нажимайте последовательно сочетание клавиш CTRL+TAB — будут отображаться все окна Книг, которые открыты в данном окне MS EXCEL. Для книг, открытых в разных окнах MS EXCEL (экземплярах MS EXCEL) это сочетание клавиш не работает. Удобно открывать в разных экземплярах Книги, вычисления в которых занимают продолжительное время. При изменении формул MS EXCEL пересчитывает только книги открытые в текущем экземпляре.
Другие возможности функции ЯЧЕЙКА() : определение типа значения, номера столбца или строки, мало востребованы, т.к. дублируются стандартными функциями ЕТЕКСТ() , ЕЧИСЛО() , СТОЛБЕЦ() и др.
Excel. Получить значение ячейки по адресу без макроса 2
Итак, решая очередную головоломку с закупкой материалов, я встал перед следующей ситуацией:
Даны две таблицы Excel на разных листах:
В таблице №1 строка состоит из пустых полей: уникальный номер товара, наименование, количество и т.п.
В таблице №2 строки непосредственно с данными: номер товара, название товара, цена, комплектность и т.п.
Я хочу связать эти таблички таким образом, чтобы при заполнении уникального номера в колонке таблицы №1 цена и название подтягивались из таблицы №2
Не хочу использовать для этого ни макросы, ни какое либо программирование, а выполнить эту задачу только средствами самого Excel
для этого мне нужно решить две задачи:
1) Найти в таблице строку, в которой находится информация о товаре
2) Используя знания об этой строке, вставить значение из нужного поля(столбца).
Решаем первую задачу:
= ПОИСКПОЗ(G11;Цены!A:A;0)
G11 — это та ячейка, куда мы вбиваем уникальный номер товара,
Цены!A:A — это колонка с уникальными номерами товаров
— формат вывода в абсолютных значениях, оставляем так, либо изучаем вопрос самостоятельно =)
Данная формула находит номер строки, в которой находится наш товар и информация о нём после того как в ячейку G11 мы вбили его уникальный номер.
Теперь нам нужно зная эту строку получить информацию о стоимости, для этого мы сперва получаем адрес данной ячейки, иначе фокус не получится.
Например за цену у нас ответственный второй столбец во второй таблице
= АДРЕС( ПОИСКПОЗ(G11;Цены!A:A;0); 2; 1;1; ‘Цены’ )
где тип ссылки абсолютный, то есть 1
и формат адреса ячеек не буквенно-числовые вида A11 B876 и т.д. , а R11C1, R876C2 и т.п
то-есть номера строк и столбцов сразу очевидны за этот формат у нас отвечает последняя 1
Сам адрес мы получаем для вкладки «Цены» , потому не забываем и её указать, иначе поиск значений будет идти на странице с таблицей 1
Мы уже у финиша
Следующая головоломка которую я не решил, зато мне подсказал мой приятель — гений Экселя.
Как зная адрес ячейки без использования макросов вытянуть из неё значения.
Всё просто, это функция
таким образом полная формула получится вида:
=ДВССЫЛ(АДРЕС(ПОИСКПОЗ(G11;Цены!A:A;0); 2 ;1;1;’Цены’)),
где меняя двойку на номер столбца с нужным типом данных мы получим любое необходимое нам значение по фиксированной товарной позиции: Наименование, тип итд
Теперь не нужно ломать голову по поводу проверки вводимых данных, они берутся полностью из имеющейся таблицы, которую до меня уже проверили ГЫГЫГЫ =)
Функция ЯЧЕЙКА в Excel и примеры ее использования
Очень часто при работе в Excel необходимо использовать данные об адресации ячеек в электронной таблице. Для этого была предусмотрена функция ЯЧЕЙКА. Рассмотрим ее использование на конкретных примерах.
Функция значения и свойства ячейки в Excel
Стоит отметить, что в Excel используются несколько функций по адресации ячеек:
Функция ЯЧЕЙКА(), английская версия CELL(), возвращает сведения о форматировании, адресе или содержимом ячейки. Функция может вернуть подробную информацию о формате ячейки, исключив тем самым в некоторых случаях необходимость использования VBA. Функция особенно полезна, если необходимо вывести в ячейки полный путь файла.
Как работает функция ЯЧЕЙКА в Excel?
Функция ЯЧЕЙКА в своей работе использует синтаксис, который состоит из двух аргументов:
- Тип_сведений – текстовое значение, задающее требуемый тип сведений о ячейке. При вводе функции вручную высвечивается выпадающий список где указаны все возможные значения аргумента «тип сведений»:
- Ссылка – необязательный аргумент. Ячейка, сведения о которой требуется получить. Если этот аргумент опущен, сведения, указанные в аргументе тип_сведений, возвращаются для последней измененной ячейки. Если аргумент ссылки указывает на диапазон ячеек, функция ЯЧЕЙКА() возвращает сведения только для левой верхней ячейки диапазона.
Примеры использования функции ЯЧЕЙКА в Excel
Пример 1. Дана таблица учета работы сотрудников организации вида:
Необходимо с помощью функции ЯЧЕЙКА вычислить в какой строке и столбце находится зарплата размером 235000 руб.
Для этого введем формулу следующего вида:
- – «строка» и «столбец» – параметр вывода;
- – С8 – адрес данных с зарплатой.
В результате вычислений получим: строка №8 и столбец №3 (С).
Как узнать ширину таблицы Excel?
Пример 2. Нужно вычислить ширину таблицы в символах. Сразу стоит отметить что в Excel по умолчанию ширина столбцов и ячеек измеряется в количестве символов, которые они умещают в своем значении доступны для отображения в ячейке без переноса строки.
Примечание. Высота строк и ячеек в Excel по умолчанию измеряется в единицах измерения базового шрифта – в пунктах pt. Чем больше шрифт, тем выше строка для полного отображения символов по высоте.
Введем в ячейку С14 формулу для вычисления суммы ширины каждого столбца таблицы:
- – «ширина» – параметр функции;
- – А1 – ширина определенного столбца.
Как получить значение первой ячейки в диапазоне
Пример 3. В условии примера 1 нужно вывести содержимое только из первой (верхней левой) ячейки из диапазона A5:C8.
Введем формулу для вычисления:
Описание формулы аналогичное предыдущим двум примерам.
Видимое значение ячейки в реальное
Часто из всем известной 1С отчеты выгружаются в Excel. Что не удивительно, ведь многие используют 1С как базу ведения всевозможных данных, а анализ предпочитают производить в Excel. И это удобно, это работает. Но часто при получении файла из 1С форматы ячеек изменены так, что отображается в ячейках одно значение, а на деле там значение совершенно иное:
Чтобы не возникло недопонимания, что это такое на картинках выше. Например, если в ячейку записать число 1077 , то оно и отобразится так же. Однако его визуальное отображение в ячейках можно изменить: выделяем ячейку -правая кнопка мыши —Формат ячеек (Format Cells) -вкладка Число (Number) . Далее в списке слева выбрать Дополнительный (Special) и установить Почтовый индекс. Тогда в ячейке визуально будет отображаться 001077 , в то время как реально в ячейке будет оставаться все то же число 1077 . Тоже и с датами. Реально в ячейке число, а визуально дата в одном из форматов из категории Дата. Подробнее про то, почему так происходит можно прочесть в статье: Как Excel воспринимает данные?
И как это всегда бывает — порой просто необходимо работать не с тем значением, которое реально в ячейке, а именно с теми, которые отображаются в ячейках. Яркий пример такой необходимости — это сцепление данных двух ячеек, в одной из которых записана дата. Например, в A1 записана дата » 06.02.2016 «, а в B1 текст вроде » Отчет по магазину за » и необходимо сцепить текст из B1 с датой из A1 . Если применить просто функцию СЦЕПИТЬ (CONCATENATE) или по простому = B1 & A1 , то результатом будет такой текст: Отчет по магазину за 42406 .
Если формат лишь один — можно стандартно попробовать побороть при помощи функции ТЕКСТ(TEXT). Например, в ячейках столбца А записаны даты в формате 31 января 2016г. Тогда формулу можно записать так:
=ТЕКСТ( A2 ;»[$-F800]ДДДД, ММММ ДД, ГГГГ»)
=TEXT( A2 ,»[$-F800]dddd, MMMM yy, yyyy»)
На примере той же СЦЕПИТЬ (CONCATENATE) :
=СЦЕПИТЬ( B1 ;ТЕКСТ( A1 ;»[$-F800]ДДДД, ММММ ДД, ГГГГ»))
=CONCATENATE( B1 ,TEXT( A1 ,»[$-F800]dddd, MMMM yy, yyyy»))
Сами вид формата для использования в функции ТЕКСТ можно подсмотреть непосредственно в форматах ячеек: правая кнопка мыши на ячейке —Формат ячеек (Format Cells) -вкладка Число (Number) -(все форматы). Там в поле Тип будет как раз приведен применяемый код формата. Можно его просто скопировать оттуда и вставить в функцию ТЕКСТ .
Но если форматы в ячейках различаются и записаны в разнобой. Стандартно этого никак не сделать, кроме как каждую ячейку руками перебивать. Но если прибегнуть к помощи Visual Basic for Applications(VBA), то можно написать простую функцию пользователя(Что такое функция пользователя(UDF)) и применить её:
Function VisualVal_Text(rc As Range) VisualVal_Text = rc.Text End Function
Для применения надо внимательно прочитать про создание функций пользователя. После этого в ячейку останется записать:
=VisualVal_Text( A1 )
и раскопировать ячейку на весь столбец. После этого можно заменить результат функции значениями(Как удалить в ячейке формулу, оставив значения) и все готово. Но и в этой функции есть недостаток. Если в ячейке отображается значение, которое не помещается в границы ячейки, то оно может быть обрезано или вместо значения будут решетки. Например, если дата в указанном формате не помещается в ячейку — вместо значений будут решетки #######:
и функция VisualVal_Text вернет так же решетки. Это тоже решаемо. Можно либо перед применением расширить столбцы с исходными данными так, чтобы значение отображалось правильно и полностью, либо применить чуть другую функцию пользователя:
Function VisualVal(rc As Range) VisualVal = Application.Text(rc.Value, rc.NumberFormat) End Function
Используется и записывается в ячейку так же, как и предыдущая:
=VisualVal( A1 )
Эта функция без всяких танцев с бубном вернет отображаемое форматом ячейки значение.
И вариант применения функции вместе с функцией СЦЕПИТЬ:
=СЦЕПИТЬ( B1 ;VisualVal_Text( A1 ))
=CONCATENATE( B1 ,VisualVal_Text( A1 ))
=СЦЕПИТЬ( B1 ;VisualVal( A1 ))
=CONCATENATE( B1 ,VisualVal( A1 ))
Как видно не надо задумываться о том какой применить формат — будет записано так же, как оно отображается в ячейке.
Все варианты решений можно посмотреть в примере :
Tips_Macro_CellValToVisual.xls (48,5 KiB, 679 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Поиск по меткам
Поделитесь своим мнением
Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум
Обращение к ячейке на листе Excel из кода VBA по адресу, индексу и имени. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке по адресу
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Range(«C5») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, 3) Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, «C») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).[C5] |
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
ActiveCell Range(«A1») Cells(1, 1) Cells(1, «A») [A1] |
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
‘по основному имени листа Лист2.Cells(2, 7) ‘по имени ярлыка Sheets(«Имя ярлыка»).Cells(3, 8) |
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range("A1:C3").Cells(5)
соответствует выражению Range("B2")
.
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого")
.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Cells(2, 4).Value = 15 Cells(2, 4) = 15 Range(«A1») = «Этот текст записываем в ячейку» ActiveCell = 28 + 10*36 |
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Sub Test() Dim a1 As Integer, a2 As Integer, a3 As Integer Range(«A3») = 6 Cells(2, 5) = 15 a1 = Range(«A3») a2 = Cells(2, 5) a3 = a1 * a2 MsgBox a3 End Sub |
Точно также можно обмениваться информацией между ячейками:
Cells(2, 2) = Range(«A4») |
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля. пустой строки или Empty:
Cells(10, 2).ClearContents Range(«D23») = 0 ActiveCell = «» Cells(5, «D») = Empty |
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
- С помощью Range
- С помощью Cells
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Workbooks("Книга1.xls").Sheets("Лист1").Range("A3") ' Обратиться к ячейке A3 Workbooks("Книга1.xls").Sheets("Лист1").Cells(3, 1) ' Обратиться к ячейке в 3-й строке и 1-й колонке (A3)
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Range("A1") Cells(1, 1)
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
With Workbooks("Книга1").Sheets("Лист2") ' Вывести значение ячейки A1, которая находится на Листе2 MsgBox .Range("A1") ' Вывести значение ячейки B1, которая находится на Листе2 MsgBox .Range("B1") End With
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Application.ActiveCell ' полная запись ActiveCell ' краткая запись
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
MsgBox Cells(1, 1) ' выведет 01.03.2018 MsgBox Cells(1, 1).Value ' выведет 01.03.2018 MsgBox Cells(1, 1).Value2 ' выведет 43160 MsgBox Cells(1, 1).Text ' выведет 01 марта 2018 г. Dim d As Date d = Cells(1, 1).Value2 ' числовое представление даты преобразуется в тип Date MsgBox d ' выведет 01.03.2018
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
MsgBox Range("C1") ' выведет 123,4568 MsgBox Range("C1").Value ' выведет 123,4568 MsgBox Range("C1").Value2 ' выведет 123,456789 MsgBox Range("C1").Text ' выведет 123,457р. Dim c As Currency c = Range("C1").Value2 ' значение преобразуется в тип Currency MsgBox c ' выведет 123,4568 Dim d As Double d = Range("C1").Value2 ' значение преобразуется в тип Double MsgBox d ' выведет 123,456789
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Dim s As String Dim i As Integer s = Range("B1").Value2 ' успех i = Range("B1").Value2 ' ошибка
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Range("A1") = 123.45 Range("A1").Value = 123.45 Range("A1").Value2 = 123.45
Все три строки запишут в A1 одно и то же значение.
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
Cells(2, 1) = #3/1/2018# Cells(2, 1).Value = #3/1/2018# Cells(2, 1).Value2 = #3/1/2018#
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
yagami2 21 / 19 / 4 Регистрация: 15.01.2015 Сообщений: 202 |
||||||||
1 |
||||||||
22.07.2017, 13:53. Показов 10455. Ответов 4 Метки нет (Все метки)
Приветствую. Недавно начал юзать OpenXML сделал все как в справонике https://msdn.microsoft.com/ru-… 98534.aspx
Считывание одной ячейки занимает 17 секунд
Что делаю не так? PS файл xlsx весом примерно 30мб
0 |
325 / 304 / 173 Регистрация: 16.11.2010 Сообщений: 1,069 Записей в блоге: 9 |
|
22.07.2017, 16:10 |
2 |
Считывание одной ячейки занимает 17 секунд . Я так понял больше всего времени отжирает Я как-то делал перебор List<>.ForEach(). Тормозил сильно, заменил на обычный перебор в цикле for вручную, быстрее в 10 раз. Как оказалось Linq хорошопомогают сокращать код, но не всегда оптимизированы по скорости. 100% утверждать не могу, но может быть и тут ручной перебор лучше будет… Да и файл 30мб — не маленький, нужно сказать. Обычный небольшой файл 1мб считался бы быстрее секунды, и никто бы не заметил…
1 |
21 / 19 / 4 Регистрация: 15.01.2015 Сообщений: 202 |
|
23.07.2017, 08:28 [ТС] |
3 |
А можете подсказать как перевести это на цикл for? Не догоняю, что именно перебирать нужно…
0 |
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||||||
23.07.2017, 19:45 |
4 |
|||||||
А вариант через Interop не подойдёт ? using Excel = Microsoft.Office.Interop.Excel; Вариант 1 — просто взять значение ячейки А1 с листа «Лист1»
Вариант 2 — берём данные с листа в массив и что-то делаем с ними
1 |
21 / 19 / 4 Регистрация: 15.01.2015 Сообщений: 202 |
|
25.07.2017, 16:10 [ТС] |
5 |
А вариант через Interop не подойдёт ? увы, но мой босс сказал чтоб никаких com объектов В итоге забил на openXML и использовал Excel Data Reader, и за пять строчек считал весь файл в dataset. Он конечно при этом 250мб оперативы отжирает, но это давняя дилемма «память vs время»
0 |
D_Rinat_S 0 / 0 / 0 Регистрация: 12.03.2012 Сообщений: 20 |
||||
1 |
||||
12.03.2012, 19:20. Показов 13450. Ответов 2 Метки нет (Все метки)
Помогите пожалуйста разобраться. Я Открываю Эксель документ через OpenFileDialog1, могу вносить изменения в него но не могу считывать ячейки. Пишу sgBox(AppSheet.Cells(3, 3)) и никакого результата. В чем может быть причина?
0 |
1706 / 1194 / 227 Регистрация: 23.12.2010 Сообщений: 1,526 |
|
12.03.2012, 19:53 |
2 |
Решение AppSheet.Cells(3, 3).value — чтобы достучаться до содержимого ячейки. Ну а там уже по месту — либо читаешь из нее (expression=AppSheet.Cells(3, 3).value), либо заносишь в нее (AppSheet.Cells(3, 3).value = expression). Где expression — некая переменная
0 |
0 / 0 / 0 Регистрация: 12.03.2012 Сообщений: 20 |
|
12.03.2012, 19:59 [ТС] |
3 |
Большое спасибо я блин целый час сижу уже)))
0 |