Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17

Выдрать значение из ячейки Excel

04.03.2018, 02:20. Показов 3417. Ответов 48

Студворк — интернет-сервис помощи студентам
Здравствуйте. Проконсультируйте пожалуйста, как сделать следующее:

Есть ячейка A1 со следующими данными
{"ABCDEFG":{"HIJK":[[111,222],[333,444]],"LMNO":[[555,666],[777,888]]}}

Как выдрать из A1 значения:

В ячейку A2 значение 111
В ячейку A3 значение 222
В ячейку A4 значение 333
В ячейку A5 значение 444
В ячейку A6 значение 555
В ячейку A7 значение 666
В ячейку A8 значение 777
В ячейку A9 значение 888

При условии, что количество цифр может отличаться (например не 111, а 1111)?
Вложения
Тип файла: xlsx Выдрать данные.xlsx (8.0 Кб, 10 просмотров)
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2018, 02:20
Ответы с готовыми решениями:

VBA excel - значение ячейки
Добрый день, Подскажите, пожалуйста, Мой макрос пишет в ячейке Cells(nrow1 - 8, ncol + 3) формулу. Мне нужно в ячейке...

Перенести значение ячейки excel в word
Возможно ли перенести значение ячейки из excel, допустим C3, в определенное место в ворде, помеченное закладкой? и при этом сохранить...

VBA Excel XP. Выдрать данные из диаграммы.
Добрый день, форумчане. Подскажите, каким образом можно было бы получить доступ к данным диаграммы (Excel XP), для которой уже нет...

48
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17
16.04.2018, 11:26  [ТС]
Студворк — интернет-сервис помощи студентам
Помогите плз
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
18.04.2018, 14:13
Опишите точнее задачу. Нужно из заданной строки вырезать блоки цифр разделенными любыми другими символами и записать в ячейки последовательно?
0
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17
21.04.2018, 00:15  [ТС]
bedvit,

Выше ребята предлагали варианты, я в VBA ноль, в Excel тоже, победить их макросы и переделать под себя не осилил

Опишу сначала, с учетом того, что домыслил и приложу таблицу Excel.

Есть ячейка A1 со следующими данными, числа время от времени меняются там сами, но кавычки-скобки и запятые статичны.
{"ABCDEFG":{"HIJK":[[111,222],[333,444]],"LMNO":[[555,666],[777,888]]}}

Количество цифр может быть не только 111, а например 11111 или 1111111111111111111.

Как выдрать из A1 значения в

ячейку B1 значение 111
ячейку B2 значение 222
ячейку B3 значение 333
ячейку B4 значение 444

ячейку C1 значение 555
ячейку C2 значение 666
ячейку C3 значение 777
ячейку C4 значение 888

так, чтобы при изменении данных в ячейке А1, числа в остальных ячейках сами подставлялись согласно вышеописанному механизму?
Вложения
Тип файла: xlsx Выдрать данные v2.xlsx (8.1 Кб, 3 просмотров)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
21.04.2018, 10:29
ну уже столько решений дали...
Вложения
Тип файла: xls Выдрать данные v2.05.xls (38.5 Кб, 4 просмотров)
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 11:18
Katar12, с любым количеством цифр в каждом блоке. Считает при изменении данных в ячейке.Решение под заданные условия и немногим более.
Вложения
Тип файла: zip Решение.zip (13.5 Кб, 2 просмотров)
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 11:25
Разделители между цифрами не имеют значения, выбирает по алгоритму
Цитата Сообщение от bedvit Посмотреть сообщение
из заданной строки вырезать блоки цифр разделенными любыми другими символами
с использованием кодов Юникода, т.е. можно использовать не только по вашему шаблону, но и по любому другому, где нужно вытащить блоки цифр из любого формата строки.
Универсальное решение для такого типа задач.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
21.04.2018, 11:27
bedvit, не всегда будет работать. Например если в А1 формула (ссылка на другую ячейке. и ещё в некоторых случаях)
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 11:36
Alex77755, да, можно убрать в событиях листа проверку на 1ю ячейку, а сделать пересчет при изменении любой. Тогда все ОК. Файл прилагаю.
Вложения
Тип файла: zip Решение2.zip (13.8 Кб, 1 просмотров)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
21.04.2018, 12:04
не факт, что ссылка на ячейку на этом листе и даже в этой книге...
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 12:18
Добавил возможность обработки варианта из одной цифры в строке или вообще без цифр. Под любые строки.
Добавил возможность удалить старые результаты в случае меньшего блока цифр в новой строке (можно поменять на нужный вам диапазон, в случае динамического количества блоков в строке - настроено на 8 в соответствии с топиком).
Alex77755, протестируете на универсальность (может что-то упускаю)?
Цитата Сообщение от Alex77755 Посмотреть сообщение
не факт, что ссылка на ячейку на этом листе и даже в этой книге...
, тогда кнопка или есть другие соображения?
Вложения
Тип файла: zip Решение3.zip (14.2 Кб, 3 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
21.04.2018, 13:41
Я не стал бы тут усложнять - есть ведь уже всякие написанные UDF... Может не самые лучшие, но уже есть
В B1
Visual Basic
1
=Substring(ExtractNumber($A$1);",";СТРОКА();СТРОКА())
В C1
Visual Basic
1
=Substring(ExtractNumber($A$1);",";СТРОКА()+4;СТРОКА()+4)
и обе протянуть вниз на 4 ячейки.
Вложения
Тип файла: rar Выдрать данные v2.rar (13.7 Кб, 1 просмотров)
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
21.04.2018, 13:46
есть другие соображения
Выдрать значение из ячейки Excel
было ж предложено решение...
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 14:03
Alex77755, посмотрел ваше решение, да возможно TextBox1_Change немногим лучше, чем Worksheet_Change или Worksheet_SelectionChange, потому как при обновлении связей на закрытий документ - данные не обновляются, но обновляются при открытом другом документе. Все эти размышления относятся к тому, как мы хотим запустить алгоритм, через кнопку или событие, а не собственно к алгоритму.
Вообщем внес изменения в свою версию:
1. Реализовал событие TextBox1_Change
2. Изменения только на листе с кодом, да же если активный лист другой.
Вложения
Тип файла: zip Решение4.zip (17.2 Кб, 2 просмотров)
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 14:23
Зашел в тему, увидел просьбу ТС, сделал свой вариант - универсальный для любых строк, другие решения не смотрел (думаю они тоже отлично справляются с данной задачей).
Была интересна задача и универсальный ответ для такого вида задач. Код набросал, помог ТС, и потренировался сам на VBA (не часто пользую сейчас).
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
21.04.2018, 16:18
посмотрел ваше решение,
не!! не моё! просто собрал из ответов...
1
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17
21.04.2018, 18:28  [ТС]
bedvit, Супер! Идеально!

Два момента:

1) В числах, в которых появляется дробная часть и разделяется точкой, конструкция рушится.
На примере: в ячейке A2 число 111, отделил дробную часть точкой после первой единицы, механизм посчитал, что добавилось еще одно число и конструкция поехала (Рисунок 1).

2) Если добавить число 999, оно не падает в ячейку C5, а отображается в D1 (Рисунок 2).
Чисел отделенных запятой может быть бесконечное количество, два/десять/пятьдесят/двести.
Те числа, что в массиве после HIJK и до LMNO - в столбец B, а те числа, что после LMNO в столбец C.
Миниатюры
Выдрать значение из ячейки Excel   Выдрать значение из ячейки Excel  
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 18:53
Katar12, в условии не было ничего сказано про дробные числа. "Конструкция" считает, что это новое число. Блоки чисел заполняются по 4 поэтому 5-е начинается с нового столбца (этого тоже не было в условии - что должен быть пятый элемент во втором столбце)
1
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17
21.04.2018, 18:54  [ТС]
bedvit, не было, извините
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
21.04.2018, 19:06
Я вас и просил наиболее точно описать задачу, входящие данные, что хотим получить.
Что бы корректировать код мне нужен ПОЛНЫЙ перечень того, как может выглядеть строка и какие данные должны быть на выходе (не только цифры но и ...с черточкой, точкой, запятой и т.д.) .

Добавлено через 7 минут
Цитата Сообщение от Katar12 Посмотреть сообщение
после HIJK и до LMNO - в столбец B, а те числа, что после LMNO в столбец C.
здесь может быть произвольное количество чисел или только во втором блоке больше 4х? какие разделители могут стоять в числе, что нужно еще учитывать? Напишите подробно условие, под него переделаю код.
1
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 17
21.04.2018, 19:21  [ТС]
Понял, вот что необходимо помимо того, что уже реализовано в "Решение4":

Чисел в массиве {"ABCDEFG":{"HIJK":[[111,222],[333,444]],"LMNO":[[555,666],[777,888]]}} находящемся в ячейке A1 может быть бесконечное множество, числа разделяются запятой. Положение чисел аналогично примеру массива.

1) Числа могут как содержать дробную часть, так и быть целыми.

2) Если в числе есть дробная часть, она отделяется точкой.

3) Число может состоять от 1 до 10 знаков, десятичная дробь может состоять от 1 до 10 знаков.

4) Числа из массива {"ABCDEFG":{"HIJK":[[111,222],[333,444]],"LMNO":[[555,666],[777,888]]}} необходимо распределять следующим образом:

а) в столбец B, по порядку вниз (B1, B2, B3 и т.д.) попадают числа из промежутка начиная от {"ABCDEFG":{"HIJK":[[ и заканчивая ]],"LMNO"
б) в столбец C, по порядку вниз (C1, C2, C3 и т.д.) попадают числа из промежутка начиная от "LMNO":[[ и заканчивая ]]}}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2018, 19:21

Как вывести на форму значение из ячейки Excel?
как вывести значение на форму с ячейкии в Excel

Макрос для Excel: как узнать значение ячейки в другом формате
Если с помощью Cells(Row,Col) присвоить ячейке какое-нибудь значение, например дата: '03.02.97' т.е.: Cells(1, 1) = '03.02.97', в таблице...

Получить значение последней записи ячейки определённого столбца VBA Excel
Приветствую форумчани подскажите кто может как получить последнюю записть определёного столбца q =...

Как принудить Excel копировать из ячейки в ячейку только ее значение без формата?
Как принудить Excel копировать из ячейки в ячейку только ее значение без формата?

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку "C4" Зелёным цветом, при условии,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru