ViktorB3 0 / 0 / 0 Регистрация: 07.07.2017 Сообщений: 32 |
||||
1 |
||||
Excel 04.06.2019, 15:34. Показов 8414. Ответов 4 Метки нет (Все метки)
Всем Доброго времени суток! Суть вопроса такова: Есть объединенная ячейка (R2C2). Нужно пройтись по всем строкам, входящие в эту ячейку, т.е. начинаем со строки 2 и до 20. При этом каждый раз необходимо проверять значение объединенной ячейки. Пробовал вот так:
Но т.к. таких объединенных ячеек много, экран «некрасиво моргает» при выделении каждой ячейки. Может есть какой-нибудь способ лучше для выполнения такой задачи? Миниатюры
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
04.06.2019, 15:41 |
2 |
опишите для чего в общем эта манипуляция.
0 |
0 / 0 / 0 Регистрация: 07.07.2017 Сообщений: 32 |
|
04.06.2019, 15:49 [ТС] |
3 |
Мне необходимо знать к какой объединенной ячейке относится строка выбранной мною ячейки. Потом значение объединенной ячейки используется для выбора переменной. (Но эт я уже слишком далеко пошел)
0 |
Заблокирован |
||||
04.06.2019, 15:52 |
4 |
|||
Сообщение было отмечено ViktorB3 как решение РешениеViktorB3, примерно так-
1 |
0 / 0 / 0 Регистрация: 07.07.2017 Сообщений: 32 |
|
04.06.2019, 15:56 [ТС] |
5 |
Остап Бонд, Огромное СПАСИБО!!! Оказывается ларчик просто открывался!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.06.2019, 15:56 |
5 |
3 ответа
Даже если это действительно не рекомендуется использовать ячейки слияния в Excel (используйте Center Across Selection
, если это необходимо), ячейка, которая «содержит» значение — это значение верхний левый (по крайней мере, способ выразить это).
Следовательно, вы можете получить значение объединенных ячеек в диапазоне B4:B11
несколькими способами:
-
Range("B4").Value
-
Range("B4:B11").Cells(1).Value
-
Range("B4:B11").Cells(1,1).Value
Вы также можете заметить, что все остальные ячейки в них не имеют значения. Во время отладки вы можете увидеть, что значение empty
.
Также обратите внимание, что Range("B4:B11").Value
не будет работать (вызывает ошибку выполнения номер 13 при попытке Debug.Print
), потому что он возвращает массив.
JMax
23 фев. 2012, в 07:31
Поделиться
Джош Браун дал (в комментарии), что я считаю лучшим ответом:
Когда я не знаю границ объединенной области, я получаю значение с помощью
Range("B6").MergeArea.Cells(1,1).Value
Это полезно в VBA, когда, например, вы перебираете файлы, которые могли бы объединить ячейки неизвестных диапазонов, поэтому вы можете быть гораздо более общим с помощью этого метода. Спасибо, Джош!
todd w
04 дек. 2013, в 02:03
Поделиться
Это можно сделать в 2 этапа:
Сначала укажите диапазон объединенных ячеек; выделите объединенную ячейку, затем перейдите на панель ленты: Formulas Tab --> Define Name;
Убедитесь, что в названии нет пробелов. Пример: defined_Name
. Перейдите в нужную ячейку, в которой вы хотите увидеть результат/результат. В этой ячейке введите: =defined_Name
.
Нажмите enter, потому что сделанный.
Christopher Lazok
21 авг. 2014, в 16:24
Поделиться
Ещё вопросы
- 1Как подтолкнуть андроид проект на github с этой ошибкой приведен ниже?
- 0HTML-сущность появляется как номер сущности на HTML-странице
- 0Элемент директивы доступа из контроллера
- 0Проблемы с GLEW и Visual Studio 2013
- 0jQuery Mouse прокручивает все окна каждую прокрутку, как на сайте aplle iphone5
- 1Как написать код для создания объекта, можно запустить функцию связывания для стека — пример JavaScript в книге
- 0Программирование для UPnP на C / C ++
- 0JQuery Mobile .html (…) теряет CSS
- 0Получение списка видео с YouTube с помощью данных YouTube Api V3 с PHP
- 0Первый вариант, выбранный по умолчанию в теге select при использовании templateURL с AngularJS
- 1Определенная длина регулярного выражения с отступом
- 0Что делает этот оператор возврата внутри службы
- 1Android: правильный способ отладки работающего приложения (ошибки времени выполнения / журнал)
- 1Изменение пути к SDK, расположенному в другом месте в Visual Studio
- 0SQL вычитание столбца из 2 других столбцов?
- 0Rails маршрутизация, как я могу ограничить мой маршрут ID?
- 1Ошибка при автозагрузке Java
- 0Представляем миграцию базы данных Liquibase в существующий продукт
- 1дельта времени для строкового типа в панде
- 1Angular: синхронизировать все FormControls с изменениями модели
- 1Как добавить участок [дубликата]
- 0Весеннее загрузочное приложение расширяется с помощью mysql
- 1[Android] Как выполнить поиск только по имени и фамилии?
- 1дефисы — проблема в получении контактных данных с частичным номером телефона
- 0Как получить цифру из строки?
- 0MySQL — есть ли способ отбросить записи в отсортированном списке после удовлетворения заданным критериям? [Дубликат]
- 0Инициализировать лайтбокс для тега img
- 0О сегментации в OPENCV
- 1Отслеживание простоя пользователя в приложении в Android
- 0Валидатор Jquery IE7 (: «Visible») не работает
- 0QTimer падает при запуске в отдельном методе
- 1Пакетное тензорное умножение с numy
- 1Можно ли изменить матрицу пикселей внутри растрового изображения в Android NDK
- 0ПЕРВИЧНЫЙ КЛЮЧ для таблицы с 2 столбцами, используемой для подсчета?
- 1Рассчитать задержку сообщений между двумя компьютерами под управлением Java-программы
- 1Как определить собственные стили списка для ckeditor?
- 0Параметр функции «не объявлен в этой области». Параметр виден в файле h
- 0Передать массив из PHP в JS
- 0Почему _kbhit () работает только один раз в программе на C?
- 0метод проверки jQuery не определен
- 0Как я могу создать фиксированный заголовок таблицы
- 1settext Jtextarea каждый клик
- 1Android-галерея LinearLayouts
- 0Как получить результаты использования MySql DB и отправить их обратно в API.ai
- 1Как запустить транспортир свиты один за другим?
- 0Страница продукта и категории Magento не работает
- 0$ watchCollection выясняет, какая часть массива изменилась
- 0JsonValueProvider не работает в ASP.NET MVC 4
- 0Определить закрытие входа в Facebook с помощью кнопки «X»
- 0JQuery не сработает?
Формулировка задачи:
Всем Доброго времени суток! Суть вопроса такова: Есть объединенная ячейка (R2C2). Нужно пройтись по всем строкам, входящие в эту ячейку, т.е. начинаем со строки 2 и до 20. При этом каждый раз необходимо проверять значение объединенной ячейки. Пробовал вот так:
Но т.к. таких объединенных ячеек много, экран «некрасиво моргает» при выделении каждой ячейки. Может есть какой-нибудь способ лучше для выполнения такой задачи? Заранее Всем Спасибо за помощь
Код к задаче: «Как получить значение объединенной ячейки Excel»
textual
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set ma = Cells(Target.Row, 2).MergeArea If ma.Count > 1 Then MsgBox ma.Cells(1) End Sub
Полезно ли:
9 голосов , оценка 4.000 из 5
I need to find out the first cell and the last cell of a vertically merged cell..
Let’s say I merge Cells B2 down to B50.
How can I get in VBA the start cell(=B2) and the end cell(=B50)?
asked Jun 1, 2010 at 15:32
1
Sub MergedAreaStartAndEnd()
Dim rng As Range
Dim rngStart As Range
Dim rngEnd As Range
Set rng = Range("B2")
If rng.MergeCells Then
Set rng = rng.MergeArea
Set rngStart = rng.Cells(1, 1)
Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)
MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address
Else
MsgBox "Not merged area"
End If
End Sub
answered Jun 2, 2010 at 8:19
dendariidendarii
2,92820 silver badges15 bronze badges
1
Below macro goes through all sheets in a workbook and finds merged cells, unmerge them and put original value to all merged cells.
This is frequently needed for DB applications, so I wanted to share with you.
Sub BirlesenHucreleriAyirDegerleriGeriYaz()
Dim Hucre As Range
Dim Aralik
Dim icerik
Dim mySheet As Worksheet
For Each mySheet In Worksheets
mySheet.Activate
MsgBox mySheet.Name & “ yapılacak…”
For Each Hucre In mySheet.UsedRange
If Hucre.MergeCells Then
Hucre.Orientation = xlHorizontal
Aralik = Hucre.MergeArea.Address
icerik = Hucre
Hucre.MergeCells = False
Range(Aralik) = icerik
End If
Next
MsgBox mySheet.Name & " Bitti!!"
Next mySheet
End Sub
Toon Krijthe
52.7k38 gold badges146 silver badges202 bronze badges
answered Dec 1, 2012 at 12:59
Suppose you merged B2 down to B50.
Then, start cell address will be:
MsgBox Range("B2").MergeArea.Cells(1, 1).Address
End cell address will be:
With Range("B2").MergeArea
MsgBox .Cells(.Rows.Count, .Columns.Count).Address
End With
You can put address of any cell of merged area in place of B2 in above code.
answered Apr 5, 2018 at 13:45
ePanditePandit
2,7772 gold badges23 silver badges15 bronze badges
Well, assuming you know the address of one of the cells in the merged range, you could just select the offset from that range and get the row/column:
Sub GetMergedRows()
Range("A7").Select 'this assumes you know at least one cell in a merged range.
ActiveCell.Offset(-1, 0).Select
iStartRow = ActiveCell.Row + 1
Range("A7").Select
ActiveCell.Offset(1, 0).Select
iEndRow = ActiveCell.Row - 1
MsgBox iStartRow & ":" & iEndRow
End Sub
The code above will throw errors if the offset row cannot be selected (i.e. if the merged rows are A1 through whatever) so you will want to add error handling that tells the code if it can’t offset up, the top rows must be 1 and if it can’t go down, the bottom row must be 65,536. This code is also just one dimensional so you might want to add the x-axis as well.
answered Jun 1, 2010 at 16:00
If you want the cell references as strings, you can use something like this, where Location, StartCell, and EndCell are string variables.
Location = Selection.Address(False, False)
Colon = InStr(Location, ":")
If Colon <> 0 Then
StartCell = Left(Location, Colon - 1)
EndCell = Mid(Location, Colon + 1)
End If
If you want to set them as ranges, you could add this, where StartRange and EndRange are Range objects.
set StartRange = Range(StartCell)
set EndRange = Range (EndCell)
answered Jun 1, 2010 at 16:30
KevenDenenKevenDenen
1,70813 silver badges25 bronze badges
If you intend to loop through the merged cells, try this.
Sub LoopThroughMergedArea()
Dim rng As Range, c As Range
Set rng = [F5]
For Each c In rng.MergeArea
'Your code goes here
Debug.Print c.Address'<-Sample code
Next c
End Sub
answered Aug 4, 2019 at 22:51
AsUsualAsUsual
5242 silver badges8 bronze badges
как обратиться к объединенной ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |