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

Вход

Регистрация

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

 

= Мир MS Excel/Вытащить значения из столбца с таблицей - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Вытащить значения из столбца с таблицей (Формулы/Formulas)
Вытащить значения из столбца с таблицей
IvanPavlov Дата: Вторник, 05.06.2018, 13:13 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Есть файл товаров. В одном из столбцов "body : Описание" содержится HTML таблица : <table width="100%"border="0"cellspacing="0"cellpadding="4"class="border"><tr class="t0"><td width="40%">Мощность (охлаждение)</td><td><b>2,6 кВт</b></td></tr><tr
У разных товаров разные параметры: Мощность, Обогрев, охлаждение и тп.
Нужно:
Достать из этого столбца (таблицы) параметры и вывести их отдельными столбцами?
К сообщению приложен файл: primer.csv(36.6 Kb)
 
Ответить
СообщениеЕсть файл товаров. В одном из столбцов "body : Описание" содержится HTML таблица : <table width="100%"border="0"cellspacing="0"cellpadding="4"class="border"><tr class="t0"><td width="40%">Мощность (охлаждение)</td><td><b>2,6 кВт</b></td></tr><tr
У разных товаров разные параметры: Мощность, Обогрев, охлаждение и тп.
Нужно:
Достать из этого столбца (таблицы) параметры и вывести их отдельными столбцами?

Автор - IvanPavlov
Дата добавления - 05.06.2018 в 13:13
sboy Дата: Вторник, 05.06.2018, 13:25 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Только названия параметров? или вместе со значениями?
 
Ответить
СообщениеДобрый день.
Только названия параметров? или вместе со значениями?

Автор - sboy
Дата добавления - 05.06.2018 в 13:25
IvanPavlov Дата: Вторник, 05.06.2018, 13:33 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Нужно что-бы создавался столбец с названием "Мощность (охлаждение)" и в нем значения. У товаров разные параметры.
 
Ответить
СообщениеНужно что-бы создавался столбец с названием "Мощность (охлаждение)" и в нем значения. У товаров разные параметры.

Автор - IvanPavlov
Дата добавления - 05.06.2018 в 13:33
sboy Дата: Вторник, 05.06.2018, 13:51 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Сделал Параметр-Значение
пользовательская функция
[vba]
Код
Function IvanPavlov(t, x, q) As String
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:<td width=""40%"">)([^<]+)|(?:<b>)([^<]+)"
    .Global = True
    If x - 1 < .Execute(t).Count Then IvanPavlov = .Execute(t)(x - 1).submatches(q)
  End With
End Function
[/vba]
формула в первую ячейку (потом протягиваем)
Код
=IvanPavlov($F2;СТОЛБЕЦ(A1);--ЕЧЁТН(СТОЛБЕЦ(A1)))


upd. переделал паттерн (упростил)
К сообщению приложен файл: primer.xlsm(34.8 Kb)


Сообщение отредактировал sboy - Вторник, 05.06.2018, 13:55
 
Ответить
СообщениеСделал Параметр-Значение
пользовательская функция
[vba]
Код
Function IvanPavlov(t, x, q) As String
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:<td width=""40%"">)([^<]+)|(?:<b>)([^<]+)"
    .Global = True
    If x - 1 < .Execute(t).Count Then IvanPavlov = .Execute(t)(x - 1).submatches(q)
  End With
End Function
[/vba]
формула в первую ячейку (потом протягиваем)
Код
=IvanPavlov($F2;СТОЛБЕЦ(A1);--ЕЧЁТН(СТОЛБЕЦ(A1)))


upd. переделал паттерн (упростил)

Автор - sboy
Дата добавления - 05.06.2018 в 13:51
IvanPavlov Дата: Вторник, 05.06.2018, 14:24 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
sboy, Большое спасибо!
Получилось, правда не совсем то, что нужно, но очень рядом :)
Как сделать что-бы создавались отдельные столбцы, например: столбец "Мощность (охлаждение)" а в нем показатели?
Дело в том, что это таблица для импорта товаров на сайт и нужен фасетный поиск по товарам (по параметрам), для этого нужны отдельные столбцы с параметрами товаров.
 
Ответить
Сообщениеsboy, Большое спасибо!
Получилось, правда не совсем то, что нужно, но очень рядом :)
Как сделать что-бы создавались отдельные столбцы, например: столбец "Мощность (охлаждение)" а в нем показатели?
Дело в том, что это таблица для импорта товаров на сайт и нужен фасетный поиск по товарам (по параметрам), для этого нужны отдельные столбцы с параметрами товаров.

Автор - IvanPavlov
Дата добавления - 05.06.2018 в 14:24
sboy Дата: Вторник, 05.06.2018, 14:26 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
а заранее список всех параметров известен? или надо из этих данных вытаскивать?
 
Ответить
Сообщениеа заранее список всех параметров известен? или надо из этих данных вытаскивать?

Автор - sboy
Дата добавления - 05.06.2018 в 14:26
IvanPavlov Дата: Вторник, 05.06.2018, 14:47 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
sboy, нужно вытаскивать, но с вашей помощью уже все вытащил. как теперь это все разбить по столбцам?
 
Ответить
Сообщениеsboy, нужно вытаскивать, но с вашей помощью уже все вытащил. как теперь это все разбить по столбцам?

Автор - IvanPavlov
Дата добавления - 05.06.2018 в 14:47
sboy Дата: Вторник, 05.06.2018, 15:02 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Макрос формирует названия столбцов
[vba]
Код
Sub param()
    arr_ = Range(Cells(2, 6), Cells(2, 6).End(xlDown)).Value
        Set oDict = CreateObject("Scripting.Dictionary")
        With CreateObject("VBScript.RegExp")
            .Pattern = "(?:<td width=""40%"">)([^<]+)"
            .Global = True
                For x = 1 To UBound(arr_)
                    For y = 0 To .Execute(arr_(x, 1)).Count - 1
                        If Not oDict.Exists(.Execute(arr_(x, 1))(y).submatches(0)) Then
                    
                            oDict.Add Key:=.Execute(arr_(x, 1))(y).submatches(0), Item:=""
                        End If
                    Next y
                Next x
        End With
     arrkey = oDict.keys
     Cells(1, 9).Resize(1, UBound(arrkey)+1) = arrkey
End Sub
[/vba]
функция теперь выглядит так
[vba]
Код
Function IvanPavlov(t, p) As String
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:" & Replace(Replace(p, "(", "\("), ")", "\)") & "<\/td><td><b>)([^<]+)"
    .Global = True
    If .test(t) Then IvanPavlov = .Execute(t)(0).submatches(0)
  End With
End Function
[/vba]
К сообщению приложен файл: 7886953.xlsm(30.8 Kb)


Сообщение отредактировал sboy - Вторник, 05.06.2018, 15:03
 
Ответить
СообщениеМакрос формирует названия столбцов
[vba]
Код
Sub param()
    arr_ = Range(Cells(2, 6), Cells(2, 6).End(xlDown)).Value
        Set oDict = CreateObject("Scripting.Dictionary")
        With CreateObject("VBScript.RegExp")
            .Pattern = "(?:<td width=""40%"">)([^<]+)"
            .Global = True
                For x = 1 To UBound(arr_)
                    For y = 0 To .Execute(arr_(x, 1)).Count - 1
                        If Not oDict.Exists(.Execute(arr_(x, 1))(y).submatches(0)) Then
                    
                            oDict.Add Key:=.Execute(arr_(x, 1))(y).submatches(0), Item:=""
                        End If
                    Next y
                Next x
        End With
     arrkey = oDict.keys
     Cells(1, 9).Resize(1, UBound(arrkey)+1) = arrkey
End Sub
[/vba]
функция теперь выглядит так
[vba]
Код
Function IvanPavlov(t, p) As String
With CreateObject("VBScript.RegExp")
    .Pattern = "(?:" & Replace(Replace(p, "(", "\("), ")", "\)") & "<\/td><td><b>)([^<]+)"
    .Global = True
    If .test(t) Then IvanPavlov = .Execute(t)(0).submatches(0)
  End With
End Function
[/vba]

Автор - sboy
Дата добавления - 05.06.2018 в 15:02
IvanPavlov Дата: Вторник, 05.06.2018, 15:44 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
sboy, Огромное спасибо! все получилось!
 
Ответить
Сообщениеsboy, Огромное спасибо! все получилось!

Автор - IvanPavlov
Дата добавления - 05.06.2018 в 15:44
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Вытащить значения из столбца с таблицей (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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