Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2013, 23:29   #1
z00lu
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию макросом выдернуть слова из одного столбца в другие по мудреному условию

Есть таблица (см прикрепленный файл)
В столбце начало то что надо обработать и вывести результаты столбцы Группа; цифробуквенный код; Итог

Есть так же список фруктов отдельным файлом

1. В столбец Группа надо внести данные из столбца "начало", если в списке фруктов есть фрукт
2. В столбец цифробуквенный код надо вставить последовательность знаков между двумя пробелами, в которых есть цифры
3. В столбце Итог надо соединить данные из ячеек "Группа" и "цифробуквенный код"

Во вложении пример заполненной таблицы (что должно получиться в итоге)

1. Первым делом думаю надо получить String из ячейки
потом в проверить его на наличие символов названий фруктов
Если какое то есть, то вернуть название фрукта в ячейку группа
2. Найти первое цифровое значение в String и выделить все знаки между пробелами.
Вернуть найденное значение в "цифробуквенный код"
3. Объединить ячейки в одну



Понимаю что мало желающих писать код, так что буду благодарен даже за ссылки с похожими задачами
Вложения
Тип файла: zip Пример.zip (1.7 Кб, 12 просмотров)
z00lu вне форума Ответить с цитированием
Старый 21.06.2013, 01:13   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Есть так же список фруктов отдельным файлом
Проимитировал этот файл на втором листе.
Смотрите применение пользовательской функции в столбце Е
Вложения
Тип файла: zip Пример.zip (14.6 Кб, 12 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 21.06.2013, 01:35   #3
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Как вариант
Код:
Public Sub Fr()
    Dim Count As Long, N, Res, tmp, i As Long, j As Integer, Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    ' заполнение словаря наименованиями фруктов ... заполнять из файла ))
    Dic.CompareMode = 1
    Dic("Яблоко") = "Яблоко"
    Dic("Груша") = "Груша"
    
    Count = Cells(Rows.Count, 1).End(xlUp).Row
    N = Cells(2, 1).Resize(Count).Value ' начало
    ReDim Res(1 To Count, 2)            ' результирующий массив
    On Error Resume Next
    For i = 1 To Count
        tmp = Split(N(i, 1))            ' разбиваем на слова
        Res(i, 0) = Dic(tmp(0))         ' фрукт всегда в начале ?!
        ' выполнять пункты 2 и 3, если фрукт не найден?
        For j = 1 To UBound(tmp)
            If tmp(j) Like "*[0-9]*" Then   ' поиск слова содержащего цифры
                Res(i, 1) = tmp(j)
                Exit For
            End If
        Next
        Res(i, 2) = Res(i, 0) & " " & Res(i, 1) ' объединение
    Next
    Cells(2, 2).Resize(Count, 3).Value = Res    ' запись результата
End Sub
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 21.06.2013, 06:54   #4
z00lu
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию

Step_UA, спасибо за внимание к моему вопросу.

Попробовал макрос в open office - не заработал
Выделил
Dic("Яблоко") = "Яблоко"
и написал
Ошибка времени выполнения BASIC Переменная типа OBject не установлена

Попробую на cамом Excele позже и буду, с вашего позволения мучить вопросами как все это работает.

Хочется разобраться раз и не делать пустой работы руками
z00lu вне форума Ответить с цитированием
Старый 21.06.2013, 10:07   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я бы со словарём чуть иначе работал - ну не важно, не суть.
Вопросы в другом -
1. неужели на самом деле все названия фруктов из одного слова? Сомневаюсь...
2. что делать, если фрукт не в списке? Могли бы показать в примере.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.06.2013, 12:30   #6
z00lu
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию

В Excel все работает

Вот думаю, стоит создавать новую тему, или все же здесь написать следующий вопрос по дальнейшей обработке данных...

Реально ли подставить в строку поиска на http://ru.wikipedia.org/ значения из столбца итог, в результатах поиска перейти по первой ссылке и с открывшейся страницы подставить в следующий столбец после итога название семейства ?

Другими словами, возможен ли такой алгоритм?

1.Переходим на http://ru.wikipedia.org/

2.Пишем в строку поиска значение из столбца итог (например груша 9)
Код:
<input name="search" placeholder="Поиск" title="Искать в Википедии [alt-shift-f]" accesskey="f" id="searchInput" tabindex="1" autocomplete="off">
Код:
<span style="white-space: nowrap;">груша 9</span>
3. На странице поиска переходим по первой ссылке
(http://ru.wikipedia.org/wiki/%D0%93%...83%D1%88%D0%B0)

4. В следующий после столбца итог подставляем название Семейства (в случае груши "Розовые")
код элемента на странице
Код:
<a href="/wiki/%D0%A0%D0%BE%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5" title="Розовые">Розовые</a>

Если можно то будет ли работать с другим (не ie) браузером?
z00lu вне форума Ответить с цитированием
Старый 22.06.2013, 12:32   #7
z00lu
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Я бы со словарём чуть иначе работал - ну не важно, не суть.
Вопросы в другом -
1. неужели на самом деле все названия фруктов из одного слова? Сомневаюсь...
2. что делать, если фрукт не в списке? Могли бы показать в примере.
1. В моем примере только из одного слова
2. Если фрукт не в списке выводит в итог только цифробуквенное обозначение

Работает
z00lu вне форума Ответить с цитированием
Старый 22.06.2013, 14:35   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Понимаю что мало желающих писать код, так что буду благодарен даже за ссылки с похожими задачами
А тем более если не замечают предложеный вариант.
Могу только ответить,код писать не буду.
Цитата:
Реально ли подставить в строку поиска на http://ru.wikipedia.org/ значения из столбца итог, в результатах поиска перейти по первой ссылке и с открывшейся страницы подставить в следующий столбец после итога название семейства ?
Другими словами, возможен ли такой алгоритм?
Да,реально.
Цитата:
Если можно то будет ли работать с другим (не ie) браузером?
Да,можно при использовании MSXML2.XMLHTTP
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 23.06.2013, 13:49   #9
z00lu
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 10
По умолчанию

doober, ваш пример видел
Спасибо за помощь
Но, ваш код, возможно из-за отсутствия комментариев сложно-читаем.
Из-за этого и решил воспользоваться примером Step_UA.
Да и словарь с фруктами очень статичен, менять в нем что-то придется раз в 2\3 года

Если буду использовать ie, будет проще выдернуть данные со страницы Wikipedia c характеристиками груши?
z00lu вне форума Ответить с цитированием
Старый 23.06.2013, 14:57   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

На IE вам будет проще,чем регулярками парсить страницу.
Мне наоборот,не люблю в DOM ковыряться.
Изучайте DOM(Document Object Model), и работайте через IE.
Примеры и в этой ветке форума есть
Например эта
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка макросом картинки по условию ogololobov2009 Microsoft Office Excel 3 18.08.2013 01:13
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
Выбор из одного столбца по условию выполняющемуся во втором столбце mjpv Microsoft Office Excel 2 30.04.2011 11:58
Сумма из одного столбца с числами в зависимости от интервала дат из другого столбца Severny Microsoft Office Excel 10 14.03.2011 10:13
скопировать дублирующие строки с одного листа на другие листы mars56 Microsoft Office Excel 22 17.02.2010 19:58