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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 20:07   #1
ZlodeiDen
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 25
По умолчанию Нужен совет в решении текстовой задачи. Бьюсь над ней больше месяца

Доброе время суток!
Нужен совет в решении задачи.
Есть файл с наименованием и значением (Х).
И есть файл с значением (Х). нужно как-то решить такую задачу.
Бьюсь над ней уже больше месяца всю голову сломал. Все известные мне решения не помогают так как значение (Х) может находиться в любом месте.
Пример сделал сам из того что пришло в голову.
Он очень похож на рабочий файл.


Зы. Буду благодарен за любую помощь.
Вложения
Тип файла: rar Пример.rar (4.1 Кб, 15 просмотров)
ZlodeiDen вне форума Ответить с цитированием
Старый 15.04.2011, 20:49   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так это в текстовом файле или в Экселе?
Если в Экселе, то обычная
Код:
=ВПР("*" & I2 & "*";$B$2:$B$8;1;0)
Только с "ghu nti" не вытягивает, но это Вы вероятно ошиблись?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.04.2011, 21:11   #3
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Код:
=ВПР("*"&ПОДСТАВИТЬ(I2;" ";"*")&"*";$B$2:$B$8;1;)
Если слова написаны через пробел, то ищет их в любом месте фразы, последовательность слов должна быть соблюдена.
Это на случай с "ghu nti"
MCH вне форума Ответить с цитированием
Старый 15.04.2011, 21:23   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Это если с разных файлов,выбирать как диалог предлагает

Код:
Sub Mesac()
 Dim FileName, FileFilter As String, s As String, Sh As Worksheet, L As Long, DD1, DD2
    FileFilter = "Все файлы (*.*),*.*," & _
            "Файл с наименованием и значением   (*.xls*),*.xls*"
    FileName = Application.GetOpenFilename(FileFilter, 2, " ", "", False)
    If (FileName = False) Or Trim(FileName) = "" Then Exit Sub
    Set Sh = GetObject(FileName).Worksheets(1)
      L = Sh.Range("B65500").End(xlUp).Row
     DD1 = Sh.Range("B2:B" & L)
    Sh.Parent.Close (False)
        FileFilter = "Все файлы (*.*),*.*," & _
            "Файл с X  (*.xls*),*.xls*"
    FileName = Application.GetOpenFilename(FileFilter, 2, " ", "", False)
    If (FileName = False) Or Trim(FileName) = "" Then Exit Sub
       Set Sh = GetObject(FileName).Worksheets(1)
      L = Sh.Range("A65500").End(xlUp).Row
     DD2 = Sh.Range("A2:A" & L)
    Sh.Parent.Close (False)
    Set Sh = ActiveSheet
    Dim X As String
    For n = 1 To UBound(DD1)
    X = ""
    For m = 1 To UBound(DD2)
    If InStr(1, DD1(n, 1), DD2(m, 1), vbTextCompare) > 0 Then
    X = DD2(m, 1)
  Exit For
    End If
    Next
Sh.Cells(n, 1) = DD1(n, 1)
Sh.Cells(n, 2) = X
    Next
       
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.04.2011, 21:26   #5
ZlodeiDen
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 25
По умолчанию

Спасибо ОГРОМНОЕ!!! всем
Я далеко не поф в ёкселе =(
Если вам не трудно можно объяснить как этим пользоваться в впр?
Я обычно пользуюсь впр так:
*
Искомое значение:Выбираю столбец со значениями
Таблица: Выдираю где искать
Номер столбца: Ставлю № который нужно
Интервальный просмотр: ложь
*
Такую формулу я пишу щас полностью в ручную. может можно как то её написать в "Аргументы функции"
Не понял от куда берутся ("*"и $

Последний раз редактировалось ZlodeiDen; 15.04.2011 в 21:48.
ZlodeiDen вне форума Ответить с цитированием
Старый 15.04.2011, 22:04   #6
19vitek
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 21
По умолчанию

Как вариант.
Код:
Sub perenoc()
i = 2
While Cells(i, 9) <> ""
  st = Cells(i, 9)
  k = 2
  While Cells(k, 2) <> ""
  st1 = Cells(k, 2)
     If UBound(Split(st1, st)) > 0 Then
       Cells(i, 7) = st1
     End If
    k = k + 1
  Wend
i = i + 1
Wend
End Sub
19vitek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов. koshka669 Помощь студентам 3 26.05.2011 18:15
Нужен совет, просто совет kardinal94 Общие вопросы Delphi 7 16.12.2010 22:16
Проблема в решении задачи [С++] asp1k Помощь студентам 0 17.11.2010 16:16
Дана строка текста.Определить какой из символов в ней больше . А или О? Райзат Фриланс 23 26.07.2010 21:20
Помогите пожалуйста мне составить программу паскаль! А то я уже сутки сижу над ней! рома холодцов Помощь студентам 2 20.01.2009 21:00