Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Извлечение данных из таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Извлечение данных из таблицы (Макросы/Sub)
Извлечение данных из таблицы
AleX_Leon Дата: Вторник, 09.12.2014, 20:22 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток.(см. в пример) Помогите "связать" размеры с ценой по уникальному артикулу. И разделение по цене одного арта. Может знаете какие формулы/макросы могут помочь, а то не знаю даже как в гугл вбить <_< . Мне бы хотя бы значения получить в любом виде. yes Файл с примером прикрепил.
Спасибо заранее!
К сообщению приложен файл: 8308379.xlsx (11.5 Kb)


i love www.excelworld.ru

Сообщение отредактировал AleX_Leon - Среда, 10.12.2014, 12:43
 
Ответить
СообщениеДоброго времени суток.(см. в пример) Помогите "связать" размеры с ценой по уникальному артикулу. И разделение по цене одного арта. Может знаете какие формулы/макросы могут помочь, а то не знаю даже как в гугл вбить <_< . Мне бы хотя бы значения получить в любом виде. yes Файл с примером прикрепил.
Спасибо заранее!

Автор - AleX_Leon
Дата добавления - 09.12.2014 в 20:22
Rioran Дата: Среда, 10.12.2014, 10:35 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
AleX_Leon, здравствуйте.

[p.s.]Судя по тому, что пост автора был отредактирован через полчаса после создания, предположу, что тема сейчас более корректная и просьба модератора как бы исполнена. Я бы тему назвал "Извлечение данных из таблицы".[/p.s.]
Предлагаю макрос. Во вложении кнопка для тестирования.

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

[vba]
Код
Option Explicit

Sub Rio_ValueHunter()

Dim ArrX As Variant 'For results
Dim RowZ As Long    'How much rows
Dim ColZ As Long    'How much columns
Dim A As Long       'To roll rows
Dim B As Long       'To roll columns
Dim X As Long       'To roll ArrX

ColZ = Cells(1, 1).End(xlToRight).Column
RowZ = Cells(1, 1).End(xlDown).Row
Call Rio_UnMerger(Range(Cells(1, 1), Cells(RowZ, ColZ)))

ReDim ArrX(2, X)
ArrX(0, 0) = "Артикул"
ArrX(1, 0) = "Размеры"
ArrX(2, 0) = "Цена"

For A = 2 To RowZ
      For B = 2 To ColZ
          If Cells(A, B).Value <> "" Then
              X = X + 1
              ReDim Preserve ArrX(2, X)
              ArrX(0, X) = Cells(A, 1).Value
              ArrX(1, X) = Cells(1, B).Value
              ArrX(2, X) = Cells(A, B).Value
              Do While Cells(A, B).Value = Cells(A, B + 1).Value
                  B = B + 1
                  ArrX(1, X) = ArrX(1, X) & "/" & Cells(1, B).Value
              Loop
          End If
      Next B
Next A

Cells(1, ColZ + 2).Resize(X + 1, 3).Value = Application.WorksheetFunction.Transpose(ArrX)
Columns(ColZ + 3).EntireColumn.AutoFit
Cells(1, ColZ + 5).Select

End Sub

Private Sub Rio_UnMerger(RngQ As Range)

Dim RngX As Range
Dim RngA As Range

For Each RngX In RngQ
      If RngX.MergeArea.Cells.Count > 1 Then
          Set RngX = RngX.MergeArea
          RngX.UnMerge
          For Each RngA In RngX
              RngA.Value = RngX.Cells(1, 1).Value
          Next RngA
      End If
Next RngX

End Sub
[/vba]
К сообщению приложен файл: Rio_VlMstr.xlsm (22.9 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Среда, 10.12.2014, 10:37
 
Ответить
СообщениеAleX_Leon, здравствуйте.

[p.s.]Судя по тому, что пост автора был отредактирован через полчаса после создания, предположу, что тема сейчас более корректная и просьба модератора как бы исполнена. Я бы тему назвал "Извлечение данных из таблицы".[/p.s.]
Предлагаю макрос. Во вложении кнопка для тестирования.

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

[vba]
Код
Option Explicit

Sub Rio_ValueHunter()

Dim ArrX As Variant 'For results
Dim RowZ As Long    'How much rows
Dim ColZ As Long    'How much columns
Dim A As Long       'To roll rows
Dim B As Long       'To roll columns
Dim X As Long       'To roll ArrX

ColZ = Cells(1, 1).End(xlToRight).Column
RowZ = Cells(1, 1).End(xlDown).Row
Call Rio_UnMerger(Range(Cells(1, 1), Cells(RowZ, ColZ)))

ReDim ArrX(2, X)
ArrX(0, 0) = "Артикул"
ArrX(1, 0) = "Размеры"
ArrX(2, 0) = "Цена"

For A = 2 To RowZ
      For B = 2 To ColZ
          If Cells(A, B).Value <> "" Then
              X = X + 1
              ReDim Preserve ArrX(2, X)
              ArrX(0, X) = Cells(A, 1).Value
              ArrX(1, X) = Cells(1, B).Value
              ArrX(2, X) = Cells(A, B).Value
              Do While Cells(A, B).Value = Cells(A, B + 1).Value
                  B = B + 1
                  ArrX(1, X) = ArrX(1, X) & "/" & Cells(1, B).Value
              Loop
          End If
      Next B
Next A

Cells(1, ColZ + 2).Resize(X + 1, 3).Value = Application.WorksheetFunction.Transpose(ArrX)
Columns(ColZ + 3).EntireColumn.AutoFit
Cells(1, ColZ + 5).Select

End Sub

Private Sub Rio_UnMerger(RngQ As Range)

Dim RngX As Range
Dim RngA As Range

For Each RngX In RngQ
      If RngX.MergeArea.Cells.Count > 1 Then
          Set RngX = RngX.MergeArea
          RngX.UnMerge
          For Each RngA In RngX
              RngA.Value = RngX.Cells(1, 1).Value
          Next RngA
      End If
Next RngX

End Sub
[/vba]

Автор - Rioran
Дата добавления - 10.12.2014 в 10:35
Hugo Дата: Среда, 10.12.2014, 10:59 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Я ещё вчера сделал похожую заготовку (она не меняет исходные данные), но не публиковал - т.к. название темы всёж никакое, да и тема ждёт формул, а не макросов.
Файл лежит на сервере и ждёт...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЯ ещё вчера сделал похожую заготовку (она не меняет исходные данные), но не публиковал - т.к. название темы всёж никакое, да и тема ждёт формул, а не макросов.
Файл лежит на сервере и ждёт...

Автор - Hugo
Дата добавления - 10.12.2014 в 10:59
Rioran Дата: Среда, 10.12.2014, 11:20 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Hugo, привет!

название темы всё ж никакое
Согласен.

не публиковал
А я не удержался.

тема ждёт формул
Возможно, но:
формулы/макросы могут помочь

Файл лежит на сервере и ждёт.
Мне было бы крайне интересно узнать, как ту же задачу решил профессионал столь высокого уровня. С нетерпением жду возможности.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеHugo, привет!

название темы всё ж никакое
Согласен.

не публиковал
А я не удержался.

тема ждёт формул
Возможно, но:
формулы/макросы могут помочь

Файл лежит на сервере и ждёт.
Мне было бы крайне интересно узнать, как ту же задачу решил профессионал столь высокого уровня. С нетерпением жду возможности.

Автор - Rioran
Дата добавления - 10.12.2014 в 11:20
Hugo Дата: Среда, 10.12.2014, 12:52 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Думаю формулами будет трудно сделать.
Ну а мою заготовку макроса можно посмотреть тут:
http://ibay.narod.ru/other/8308379H.xlsm
Сейчас на форум файл приложить не могу, работа...
Для практического использования код требует доработки - смотря по задаче. На конкретном приложенном примере работает.

Может тему переместить в VBA?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДумаю формулами будет трудно сделать.
Ну а мою заготовку макроса можно посмотреть тут:
http://ibay.narod.ru/other/8308379H.xlsm
Сейчас на форум файл приложить не могу, работа...
Для практического использования код требует доработки - смотря по задаче. На конкретном приложенном примере работает.

Может тему переместить в VBA?

Автор - Hugo
Дата добавления - 10.12.2014 в 12:52
ShAM Дата: Среда, 10.12.2014, 14:00 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
[offtop]
Может тему переместить в VBA?
Гы, Игорь, а сам как думаешь?[/offtop]
 
Ответить
Сообщение[offtop]
Может тему переместить в VBA?
Гы, Игорь, а сам как думаешь?[/offtop]

Автор - ShAM
Дата добавления - 10.12.2014 в 14:00
AleX_Leon Дата: Среда, 10.12.2014, 14:18 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Всем спасибо, что откликнулись...буду пробовать


i love www.excelworld.ru
 
Ответить
СообщениеВсем спасибо, что откликнулись...буду пробовать

Автор - AleX_Leon
Дата добавления - 10.12.2014 в 14:18
Hugo Дата: Среда, 10.12.2014, 14:22 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
[offtop]Ну так нужно чтоб автор был в курсе :)
Теперь автор появился, надеюсь в курсе. Перенёс.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[offtop]Ну так нужно чтоб автор был в курсе :)
Теперь автор появился, надеюсь в курсе. Перенёс.

Автор - Hugo
Дата добавления - 10.12.2014 в 14:22
AleX_Leon Дата: Среда, 10.12.2014, 14:31 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Оффтоп:
Ну так нужно чтоб автор был в курсе

Мне главное результат:)

Rioran, Hugo, СПАСИБО, ваши макросы обалденны! hands Вы мои кумиры specool скинул за помощь по копейки


i love www.excelworld.ru

Сообщение отредактировал AleX_Leon - Среда, 10.12.2014, 14:57
 
Ответить
СообщениеОффтоп:
Ну так нужно чтоб автор был в курсе

Мне главное результат:)

Rioran, Hugo, СПАСИБО, ваши макросы обалденны! hands Вы мои кумиры specool скинул за помощь по копейки

Автор - AleX_Leon
Дата добавления - 10.12.2014 в 14:31
krosav4ig Дата: Среда, 10.12.2014, 21:21 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
А у мну есть решение без vba ^_^
К сообщению приложен файл: 123.xls (49.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеА у мну есть решение без vba ^_^

Автор - krosav4ig
Дата добавления - 10.12.2014 в 21:21
Hugo Дата: Среда, 10.12.2014, 23:28 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Красавчик! :)
Не, макросы проще... Я логику этих формул понять не могу :(


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеКрасавчик! :)
Не, макросы проще... Я логику этих формул понять не могу :(

Автор - Hugo
Дата добавления - 10.12.2014 в 23:28
AleX_Leon Дата: Четверг, 11.12.2014, 17:45 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
krosav4ig, молодец yes


i love www.excelworld.ru
 
Ответить
Сообщениеkrosav4ig, молодец yes

Автор - AleX_Leon
Дата добавления - 11.12.2014 в 17:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Извлечение данных из таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!