0 / 0 / 0
Регистрация: 16.02.2011
Сообщений: 11

Как присвоить ячейке значение другой ячейки, у которой известны координаты

16.02.2011, 18:10. Показов 36162. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите, пожалуйста, начинающему
необходимо присвоить значение ячейки, у которой известны координаты, другой, и перейти на ячейку, соседнюю с первой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2011, 18:10
Ответы с готовыми решениями:

Вопрос по адресации в Excel: как получить данные из ячейки, адрес которой указан в другой ячейке?
Доброго дня всем. Тут такое дело - в ячейке, к примеру А1 лежит номер столбца, а в ячейке А2 - номер строки. Как получить значение из...

Как присвоить значение ячейки одного листа и поставить ее в другой лист
Подскажите пожалуйста! Как присвоить значение ячейки одного листа и поставить ее в другой лист dim a dim name as string name =...

Как присвоить переменной имя ячейки ексель по которой кликнул пользователь
Здравствуйте. Известно только то что пользователь обязательно кликнет по ячейке после того как msgBox попросит его об этом. Как...

8
 Аватар для pashulka
4136 / 2240 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
17.02.2011, 01:24
Давайте воспользуемся свойствами и методом об'екта Range
- Value
- Offset
- Select

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

Visual Basic
1
2
ActiveCell.Value = Cells(iRow, iClm).Value
Cells(iRow, iClm).Offset(0, 1).Select 'смещение на один столбец вправо
Примечание :
ActiveCell - активная ячейка рассматривается только в качестве 'наглядного пособия' и может быть заменена на любой другой вариант обращения к ячейке.

На самом деле можно обойтись и без явного использования Value, Offset с тем же результатом

Visual Basic
1
2
ActiveCell = Cells(iRow, iClm)
Cells(iRow, iClm + 1).Select
Естественно, что перемещаться можно в любом направлении, но не стоит забывать, что в рабочем листе существует всего 256 столбцов и 65536 строк, а это значит, что при использовании вот этих инструкций Вы получите сообщение об ошибке (*)

Visual Basic
1
2
Cells(1, 250).Offset(1, 10).Select
Cells(65530 + 10, 1).Select
P.S. Если Вам нужно перейти к следующей в строке ячейке, то можно использовать :

Visual Basic
1
Cells(iRow, iClm).Next.Select
Если iRow = 256, то получите ошибку (*)

* - сообщение об ошибке Вы получите только, в том, случае если у Вас отсутствует режим отложенной ошибки и т.д.
0
 Аватар для pashulka
4136 / 2240 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
17.02.2011, 01:27
Прощу прощения за опечатку, правильный вариант :
Если iClm = 256, то получите ошибку (*)
0
0 / 0 / 0
Регистрация: 16.02.2011
Сообщений: 11
17.02.2011, 12:09  [ТС]
Спасибо за помощь!
0
0 / 0 / 0
Регистрация: 16.02.2011
Сообщений: 11
17.02.2011, 12:38  [ТС]
А если ячейка, в которую надо внести значение, находится на другом листе?
0
 Аватар для palva
4256 / 2952 / 688
Регистрация: 08.06.2007
Сообщений: 9,862
Записей в блоге: 4
17.02.2011, 12:40
Для присваивания в строке 3 ячейке в колонке 2 значения ячейки в колонке 1 можно написать:
Code
1
  Cells(3, 2) = Cells(3, 1)
А можно и короче:
Code
1
  [b3] = [a3]
Последнее работает даже если установлен стиль ссылок R1C1
0
 Аватар для pashulka
4136 / 2240 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
17.02.2011, 13:28
Visual Basic
1
2
3
Worksheets('Лист1').Cells(3, 3).Value = Worksheets('Лист2').Cells(iRow, iClm).Value
Worksheets(1).Cells(3, 3).Value = Worksheets(2).Cells(iRow, iClm).Value
Лист1.Cells(3, 3).Value = Лист2.Cells(iRow, iClm).Value
- можно обойтись и без явного использования Value с тем же результатом
- имя листа можно заменить на переменную
- вместо Worksheets можно использовать Sheets
- сократить код можно, если использовать With или Set

Предполагается , что:
iRow - это номер строки
iClm - это номер столбца
'Лист1', 'Лист2' - это имя рабочих листов
1, 2 - это индекс (номер) рабочего листа в семействе Worksheets
Лист1, Лист2 - это имя рабочих листов в среде VBA, не путайте с именем рабочего листа, отображаемого на ярлычке

To palva
Прежде чем дополнять чужие ответы, неплохо для начала
внимательно его прочитать

>ActiveCell - активная ячейка рассматривается только в >качестве 'наглядного пособия' и может быть заменена на любой другой >вариант обращения к ячейке.
>На самом деле можно обойтись и без явного использования Value, >Offset с тем же результатом
>ActiveCell = Cells(iRow, iClm)

Cells(3, 2) = Cells(3, 1)
Разве это не клон моего ответа ???

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

>Последнее работает даже если установлен стиль ссылок R1C1

А, что остальные варианты при стиле R1C1 не работают ???
0
 Аватар для palva
4256 / 2952 / 688
Регистрация: 08.06.2007
Сообщений: 9,862
Записей в блоге: 4
17.02.2011, 14:48
> Cells(3, 2) = Cells(3, 1)
> Разве это не клон моего ответа ???

Конечно, клон. Я подумал, что это будет понятнее, поскольку является прямым ответом на вопрос топика.

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

Если координаты ячейки вычисляются в макросе или являются переменными, то, конечно, проще использовать Cells. Если координаты ячейки постоянны, то можно заранее преобразовать их в адрес и использовать в макросе более короткую запись. Хотя ячейкам с постоянным адресом логичнее дать имя, например, 'CursEvro' и получать значение так: [CursEvro]

>>Последнее работает даже если установлен стиль ссылок R1C1

>А, что остальные варианты при стиле R1C1 не работают ???

Работают, но это написано под впечатлением странной несимметричной ситуации: Когда стиль R1C1 установлен, то можно написать [J10] = [R20C12], то есть рабоают оба способа адресации. А когда стиль R1C1 НЕ установлен, то [J10] работает, а [R20C12] - нет.

Извините, я не хотел вас уязвить. Я больше думал об авторе вопроса и боялся, что ваш ответ будет для него слишком замысловатым.
0
 Аватар для pashulka
4136 / 2240 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
18.02.2011, 00:55
To Palva

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

- На самом деле, это очень хорошо, что есть место, где человек может получить ответ на свой вопрос от нескольких людей, просто появление ответов клонов, не есть лучший вариант решения вопроса.
- То что Вы приняли за замысловатость, есть метод выдачи информации, т.е.

ActiveCell.Value = Cells(3, 1).Value

Примечание :
- ActiveCell - можно заменить на другой способ обращения к ячейке
- Value - можно убрать

После прочтения этого примечания, человек должен сам произвести некоторые действия, для самостоятельного закрепления материала.
т.е. заменить ActiveCell на Cells(1, 1) и убрать Value

> Cells(3, 2) = Cells(3, 1)
А появление подобного кода, может рассматриваться как сомнение в умственных способностях человека.

Кстати, если этот топик читают преподаватели, то они смогут подтвердить наличие подобной методики.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2011, 00:55
Помогаю со студенческими работами здесь

Как изменить заливку ячейки в зависимости от значений в другой ячейке?
Привет! Подскажите... Спасибо. ОлеГ

Приплюсовывание числа одной ячейки как минут к другой ячейке
Формат ячеек столбца B - часы:минуты. Задача стоит такая: ввожу в ячейку столбца C от руки число, соответствующее количеству минут,...

Как присвоить значение текущей ячейке в VBA?
Добрый день Подскажите пожалуйста как реализовать такой механизм Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal...

Как задать значение для ячейки в зависимости от значения другой ячейки
Здравствуйте! Подскажите, как задать значение для ячейки в зависимости от значения другой ячейки. Есть таблица с ячейками. Если значение...

Excel: как зафиксировать в определённой ячейке, какие-то меняющиеся значения из другой ячейки?
Имеются следующие условия: Файл Exсelа (2003) завязан с другой программой. Из этой программы идёт отображение данных в определённой...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru