Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
 
Katar12
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 15
#1

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

04.03.2018, 02:20. Просмотров 928. Ответов 43

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

Есть ячейка 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)?
1
Вложения
Тип файла: xlsx Выдрать данные.xlsx (8.0 Кб, 7 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2018, 02:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выдрать значение из ячейки Excel (VBA):

Как автоматически в тексте док-та Word 2007 вставлять значение ячейки вставленной Excel? - MS Office
Есть документ Word 2007 с вставленной Excel 2007. Надо сделать так, чтобы значение формулы из ячейки I1 Excel автоматически добавлялось в...

MS Office Excel Перенос информации из ячейки в часть данных другой ячейки - MS Excel
День добрый. Добросовестно искал ответ на свой вопрос в течение 20 минут, ничего не нашел... Собственно: Имеется ячейка с...

Как в источнике списка для ячейки E поставить ссылку на значение ячейки D - MS Excel
Добрый день! Столкнулся со следующей проблемой. Подскажите, пожалуйста. Есть таблица (матрица) со значениями:...

Как перенести не только значение ячейки но и цвет ячейки - MS Excel
Добрый день, Скажите пожалуйста, есть ли возможность решить данную задачу без использования VB? 1.Ячейка А1 имеет значение "5", и...

Значение ячейки в зависимости от значения другой ячейки - MS Excel
Уважаемые форумчане, очень нужна ваша помощь. тем полно перерыла, но т.к. знаний в этой области не хватает, помочь себе не смогла,...

Значение ячейки в зависимости от значения другой ячейки - MS Excel
Добрый день! Есть собственно вот такая задача: есть ячейка с цыфровым значением (предположим А1), и есть вторая ячейка...

43
Hugo121
6198 / 2317 / 387
Регистрация: 19.10.2012
Сообщений: 6,869
21.04.2018, 13:41 #31
Я не стал бы тут усложнять - есть ведь уже всякие написанные UDF... Может не самые лучшие, но уже есть
В B1
Visual Basic
1
=Substring(ExtractNumber($A$1);",";СТРОКА();СТРОКА())
В C1
Visual Basic
1
=Substring(ExtractNumber($A$1);",";СТРОКА()+4;СТРОКА()+4)
и обе протянуть вниз на 4 ячейки.
1
Вложения
Тип файла: rar Выдрать данные v2.rar (13.7 Кб, 1 просмотров)
Alex77755
10686 / 3261 / 538
Регистрация: 13.02.2009
Сообщений: 9,620
21.04.2018, 13:46 #32
есть другие соображения
Выдрать значение из ячейки Excel
было ж предложено решение...
1
bedvit
397 / 133 / 15
Регистрация: 20.05.2016
Сообщений: 554
Записей в блоге: 6
21.04.2018, 14:03 #33
Alex77755, посмотрел ваше решение, да возможно TextBox1_Change немногим лучше, чем Worksheet_Change или Worksheet_SelectionChange, потому как при обновлении связей на закрытий документ - данные не обновляются, но обновляются при открытом другом документе. Все эти размышления относятся к тому, как мы хотим запустить алгоритм, через кнопку или событие, а не собственно к алгоритму.
Вообщем внес изменения в свою версию:
1. Реализовал событие TextBox1_Change
2. Изменения только на листе с кодом, да же если активный лист другой.
1
Вложения
Тип файла: zip Решение4.zip (17.2 Кб, 1 просмотров)
bedvit
397 / 133 / 15
Регистрация: 20.05.2016
Сообщений: 554
Записей в блоге: 6
21.04.2018, 14:23 #34
Зашел в тему, увидел просьбу ТС, сделал свой вариант - универсальный для любых строк, другие решения не смотрел (думаю они тоже отлично справляются с данной задачей).
Была интересна задача и универсальный ответ для такого вида задач. Код набросал, помог ТС, и потренировался сам на VBA (не часто пользую сейчас).
1
Alex77755
10686 / 3261 / 538
Регистрация: 13.02.2009
Сообщений: 9,620
21.04.2018, 16:18 #35
посмотрел ваше решение,
не!! не моё! просто собрал из ответов...
1
Katar12
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 15
21.04.2018, 18:28  [ТС] #36
bedvit, Супер! Идеально!

Два момента:

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

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

Добавлено через 7 минут
Цитата Сообщение от Katar12 Посмотреть сообщение
после HIJK и до LMNO - в столбец B, а те числа, что после LMNO в столбец C.
здесь может быть произвольное количество чисел или только во втором блоке больше 4х? какие разделители могут стоять в числе, что нужно еще учитывать? Напишите подробно условие, под него переделаю код.
1
Katar12
5 / 5 / 0
Регистрация: 04.03.2018
Сообщений: 15
21.04.2018, 19:21  [ТС] #40
Понял, вот что необходимо помимо того, что уже реализовано в "Решение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
bedvit
397 / 133 / 15
Регистрация: 20.05.2016
Сообщений: 554
Записей в блоге: 6
21.04.2018, 19:39 #41
Тестируйте.
0
Вложения
Тип файла: zip Решение5.zip (17.8 Кб, 3 просмотров)
bedvit
397 / 133 / 15
Регистрация: 20.05.2016
Сообщений: 554
Записей в блоге: 6
22.04.2018, 18:33 #42
Katar12, вариант подошёл?
0
johny_ez
36 / 6 / 0
Регистрация: 24.04.2018
Сообщений: 8
24.04.2018, 18:56 #43
а есть книжка где эти процедуры описаны?
1
Hugo121
6198 / 2317 / 387
Регистрация: 19.10.2012
Сообщений: 6,869
24.04.2018, 18:59 #44
johny_ez, если уточните какие конкретно процедуры - можно будет пытаться ответить.
0
24.04.2018, 18:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2018, 18:59
Привет! Вот еще темы с ответами:

Задать значения ячейки excel, в зависимости от значения другой ячейки - MS Excel
Всем, доброго времени суток. Нужно помощь при работе в excel. Перечитал кучу форумов, кое-что на вашем нашел, но при решении одной из задач...

Привязать значение ячейки на одном листе к значению ячейки в другом листе - MS Excel
как привязать значение ячейки на одном листе к значению ячейки в другом листе, чтобы при сортировке другого листа значения не терялись....

Изменение цвета ячейки в Excel - MS Excel
Помогите, как сделать в Excel так, чтобы было изменение цвета ячейки в зависимости от приближения к контролькой дате, установленной в этой...

Задать значения ячейки excel - MS Excel
Доброго дня! подскажите пожалуйста, как в приложенном файле сделать возможность сортировки по коду 9 знаков с итоговой суммой на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru