Формула берущая значение из объединенной ячейки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Значение из объединённой ячейки при ссылке на не верхнюю-левую ячейку.
Модератор:Naeel Maqsudov
-
tolikt
- Сообщения:93
- Зарегистрирован:29 окт 2005, 12:33
- Откуда:NewVasюbirsk
Ячейки A1:B3 объединены. В этой объединённой ячейке находится значение 1.
Если в C4 ввести формулу «=A1» то получим результат 1. Если формулу в C4 скопировать на область [noparse]C4 6[/noparse], то во всех ячейках, кроме самой C4, результат будет 0. Это понятно, т.к. формулы скопировались со смещением по ссылке. А хотелось бы получать значение из верхней-левой, т.е. 1.
Как обычными формулами без VBA получить значение объединённой ячейки, если ссылка не на левую-верхнюю ячейку из этой объединённой?
Абсолютная ссылка ($A$1) тут не подойдёт, ибо формулу надо скопировать на несколько объединённых областей, где значения верхней-левой ячеек разные.
Через VBA это решается просто.
Код: Выделить всё
Function V(R As Range)
V=R.MergeArea
End Function
И в область [noparse]C4 6[/noparse] ввести формулу «=V(A1)»
Но надо без макросов.
В функции ПОЛУЧИТЬ.ЯЧЕЙКУ типа информации о вхождении или нет ячейки в объединённую область тоже не нашёл.
-
VictorM
- Сообщения:787
- Зарегистрирован:23 окт 2006, 01:44
- Откуда:Lugansk, Ukraine
- Контактная информация:
19 май 2008, 15:15
tolikt,
Абсолютная ссылка ($A$1) тут не подойдёт
не совсем понятно, а почему не подойдет
если следовать Вашим условиям, то формула =$A$1 прекрасно «размножается» на диапазон C4 : D6 «растягиванием» и во всех ячейках этого диапазона имеем значение 1. (специально проверил, а вдруг ).
и что такое
несколько объединённых областей, где значения верхней-левой ячеек разные
мож я где чё не понял?
«Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу — и вы накормите их на всю жизнь».
-
tolikt
- Сообщения:93
- Зарегистрирован:29 окт 2005, 12:33
- Откуда:NewVasюbirsk
19 май 2008, 22:15
Нет, никакая абсолютная ссылка не пойдёт. Ибо нужно одинаковую формулу скопировать на большой диапазон, в каждой ячейке диапазона ссылки на РАЗНЫЕ объединёные ячейки в которых, соответственно, РАЗНЫЕ данные. И размер (количество входящих одинарных ячеек) каждой объединённой ячейки заранее неизвестно.
Для пояснения см. файл.
В столбце A — ряд объединённых ячеек с данными
В столбце B — вид формулы
В столбце C — результат формулы
В столбце D — результат функции VBA — который и есть правильный.
Т.е. надо получить результат, как в D, но без VBA.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
VictorM
- Сообщения:787
- Зарегистрирован:23 окт 2006, 01:44
- Откуда:Lugansk, Ukraine
- Контактная информация:
19 май 2008, 22:31
tolikt, ну что же. С примером оно конечно понятнее будет.
Тогда действительно вопрос, как получить значение ячейки которой нет?
Я, конечно, не знаю полностью условий Вашей задачи, но может присвоить объединенным ячейкам имена?
«Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу — и вы накормите их на всю жизнь».
-
tolikt
- Сообщения:93
- Зарегистрирован:29 окт 2005, 12:33
- Откуда:NewVasюbirsk
19 май 2008, 23:48
Ну, ячейка-то как бы есть… Значение в ней — пусто.
Идея получения нужного значения лежит на поверхности:
Если значение в ячейке пусто, то брать значение из ячейки над пустой. Если и она пустая, то выше и так далее вверх. В VBA данный цикл можно организовать легко. Впрочем, там есть ещё более простая функция MergeArea. А как всё это организовать без VBA, а только с помощью своих формул.
Пробовал поиграться с ПОИСКПОЗ, ЧСТРОК и другими, но не получается.
В функции ПОЛУЧИТЬ.ЯЧЕЙКУ нет такого типа информации о ячейке, как объединена она или нет. Хотя она тоже не совсем функция листа.
Составная функция (для ячейки C5) типа =ЕСЛИ(A5<>»»;A5;C4) тоже не прокатит, т. к. на самом деле формула сложная и в ячейке C4 уже будет какое-то вычисленное значение, а не нужное исходное, находящееся в объединённой ячейке, в которую входит ячейка A5.
-
VictorM
- Сообщения:787
- Зарегистрирован:23 окт 2006, 01:44
- Откуда:Lugansk, Ukraine
- Контактная информация:
19 май 2008, 23:54
Да, с VBA там конечно проще получается. Я это тоже попробовал. А вот без оного…
Надо чёт искать…
А с именоваными ячейками тоже не катит?
«Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу — и вы накормите их на всю жизнь».
-
ZORRO2005
- Сообщения:25
- Зарегистрирован:11 июн 2006, 21:48
20 май 2008, 16:38
Попробуйте так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
VictorM
- Сообщения:787
- Зарегистрирован:23 окт 2006, 01:44
- Откуда:Lugansk, Ukraine
- Контактная информация:
20 май 2008, 16:50
ZORRO2005, класс!
Действительно, не именованные ячейки , а массивы!
Посмотрим, что скажет автор темы.
«Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу — и вы накормите их на всю жизнь».
-
tolikt
- Сообщения:93
- Зарегистрирован:29 окт 2005, 12:33
- Откуда:NewVasюbirsk
21 май 2008, 07:09
Да, ZORRO2005 молодец!
Мелкие нюансы, конечно, есть: надо не забыть ввести формулу массива и вообще итоговая формула получается довольно громоздкой. Но это мелочи.
Главное, почему именно надо было данные из объединённой ячейки. В некоторых ячейках данных нет (т.е. даже не 0, а пусто), но они не входят в область объединения с верхней объединённой ячейкой. И данная формула пропускает пустые необъединённые ячейки. Т.е. полного аналога MergeArea не получается и, похоже, без VBA не получится.
Но всё равно спасибо. Данное решение, скорее всего, придётся использовать, немного подкорректировав постановку задачи.
ViktorB3 0 / 0 / 0 Регистрация: 07.07.2017 Сообщений: 32 |
||||
1 |
||||
Excel 04.06.2019, 15:34. Показов 8381. Ответов 4 Метки нет (Все метки)
Всем Доброго времени суток! Суть вопроса такова: Есть объединенная ячейка (R2C2). Нужно пройтись по всем строкам, входящие в эту ячейку, т.е. начинаем со строки 2 и до 20. При этом каждый раз необходимо проверять значение объединенной ячейки. Пробовал вот так:
Но т.к. таких объединенных ячеек много, экран «некрасиво моргает» при выделении каждой ячейки. Может есть какой-нибудь способ лучше для выполнения такой задачи? Миниатюры
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
|
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, примерно так-
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Фильтрация таблицы по выбору переключателя
- 0JavaScript, если условия заявления не соблюдены?
- 1Представление тамильского Unicode в NetBeans 7.1
- 0Показать / скрыть результаты PHP MySQL с загрузчиком
- 0Ошибка ORMLite при вставке с автоинкрементным ключом
- 0Создание массива из строки
- 0Как передать аргументы для обещания в AngularJS
- 1Как изменить цвет определенной части моего текстового представления?
- 1Изменение размера изображения в JLabel
- 1Как использовать сплит для CSV при выходе
- 0Сценарии автозагрузки ExtJs не выполнены
- 0Как получить адрес памяти указателя на char [] в c ++
- 0Как реализовать загрузку блесны в приложение в ионной структуре
- 0Как мне получить изображение для показа в панели навигации?
- 1Shell Script .SH заменяет определенный раздел в файле
- 0Передача параметра из углового js для метода веб-API POST
- 0jQuery UI слайдер не отображается при вызове из углового интерфейса UI
- 1Удалить панели Jframe
- 1Что означают три точки с запятой (;) в Java?
- 0MySQL: всегда ли унифицированный выбор быстрее, чем отдельный выбор?
- 1Остановка фоновой службы музыки
- 0Как создать автоматическую загрузку страницы каждую неделю в воскресенье, используя php mysql?
- 1Улучшение производительности для программы решения лабиринтов в Python
- 0Как использовать заголовок opencv в приложении Visual Studio Windows
- 1Я хочу иметь возможность наследовать от класса внутри, но запретить класс в других сборках наследовать от класса
- 1Является ли асинхронный Python действительно асинхронным?
- 1Объединение массива строк в Javascript по две одновременно
- 0Сортируемый, фильтруемый, список пользователей в магистральной марионетке?
- 0ER_PARSE_ERROR: проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘== false
- 1Правильное взаимодействие с фрагментами в FragmentPagerAdapter
- 0Не получить правильных ответов от очень простых функций
- 0В angular-google-maps, как правильно связывать события клика на многоугольнике
- 1FloatingActionButton виден некоторое время, даже если видимость отключена
- 0Directx 11 Z-Buffer не рендерится и не мерцает
- 1Исключить диапазон IP-адресов из данных
- 1Ошибка инициализации SDL, причина: нет доступных видеоустройств в Ubuntu 12.04 LTS
- 1BackupManager & BackupAgent в Android 2.2
- 0Сложность интеграции PayPal в мой проект
- 1Почему мой метод рисования вызывается только через раз?
- 1Объединение двух списков разной длины в кортежи в каждом n-м элементе более длинного списка
- 1Открыть несколько сайтов в одном окне в разных вкладках
- 1Выберите строки в кадре данных Pandas с пустыми списками в определенном столбце [дубликаты]
- 1Использование данных из асинхронных функций
- 0Повторите переключение данных на основе клика
- 1Поиск столбцов в CSV-файле
- 1ServiceStack: установите корневой URL для страницы индекса на /
- 1Mono / WCF: невозможно определить IP вызывающего абонента в Ubuntu
- 0Получить относительную дату из функции NOW () [duplicate]
- 1Сканирование накопления с использованием rowid
- 1Контроль исключений при выпуске приложения?
11.04.20 — 18:09
Здравствуйте.
Если возможно, подскажите ссылку, как обрабатывать данные Exel с объединенными ячейками. Как считывать по номерам столбцов знаю.
Не нашла, как обработать значения объединенных ячеек. Еще одна сложность, что нужно анализировать значение первой объединенной в каждой строке, а размер разный.
На скрине понятнее, наверное, прикрепляю.
https://radikal.ru/lfp/b.radikal.ru/b19/2004/52/02a51fbf993d.jpg/htm
1 — 11.04.20 — 18:49
(0) нет возможности решить задачу более простым способом — сделать выгрузку из источника более простой, например, в XML-файл?
2 — 11.04.20 — 18:49
а то сношаться с ячейками так себе удовольствие.
3 — 11.04.20 — 18:51
(1) — нет возможности выгрузить в другой формат, к сожалению.
посмотрела еще раз файл… есть мысль, что можно обратиться по номеру первой колонки из объединенных… буду пробовать..
4 — 11.04.20 — 19:30
у меня ПРЫГ-СКОК элементарно загрузит этот файл и обработает
получи данные
количество строк и столбцов
загрузи в ТЗ — дальше придумай как обработать
удалить пустые столбцы
удалить строки (выделяющиеся по своим параметрам)
т.е. максимальное количество данных в строке 24 значения
понятно что строки с 2-5 значений можно игнорировать.
у тебя есть контрольный столбец с количеством — посчитала например 4890
и сравниваешь итог перед удалением строки, удалила, сравнила — изменилось, вернула
попробуй интересная задача, но решаемая
5 — 11.04.20 — 19:33
https://magazkat.ru/samouchitel-instruktsiya-polzovatelya/item/171-universalnaya-zagruzka-iz-excel — посмотри
тем более у тебя в этом файле есть нумерация строк Строка(n, 2).text — вот и беги по ней 315,316,….,317
6 — 11.04.20 — 19:37
не, нафиг.
кто строит обмен данными на хитроввипаных экселях — должны страдать и мучаться.
если эксель — то простой плоский файл. Нет такого — НАХЕР! пусть манагеры ручками переносят/забивают. Надоест им — договорятся о нормальном обмене. Не надоесть — программер как был так и есть не при чем…
7 — 11.04.20 — 19:38
(4) 100% гарантия правильной обработки всех файлов?
8 — 11.04.20 — 20:00
(7) ну 100 не 100, но за 5 лет проблем выявлено не было. Проглатывает все
9 — 11.04.20 — 22:13
Если я правильно помню, то если объединить три ячейки в одну, то при считывании данных оттуда данные будут считываться только из той, где они были до объединения. То есть, в одном файле будет так, в другом может быть по-другому.
10 — 12.04.20 — 11:29
Грузи, через табличный документ (метод «Прочитать()» из файла эксель). Тогда значение объединённой ячейки всегда будет равно значению из первой ячейки этого обьединения.
С (9) я тоже согласен, но это надо проверить.
11 — 12.04.20 — 15:59
У меня с объединенными что-то не получалось, я их разъединял, unmerge вроде. Какие волшебные слова писать, можно подсмотреть, записав макрос в экселе.
Табличный документ намного быстрее экселя штучка, может туда копировать и там потом обрабатывать. И от того, какие электронные таблицы где стоят, не будете зависеть.
12 — 12.04.20 — 16:31
(0) Пошли их лесом.
13 — 12.04.20 — 16:41
(10) +.
Недавно тоже сталкивался,
ТабличныйДокумент.Прочитать(ИмяФайлаЕксель);
помогло
14 — 12.04.20 — 17:03
(13) имя файла задано на клиенте, а метод Прочитать() доступен только на сервере
15 — 12.04.20 — 17:18
Выгрузить в массив и работать уже с ним.
АнализДанных
16 — 13.04.20 — 13:35
(14) нет никаких проблем передать файл на сервер и там прочитать.