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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 17:51   #1
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию Найти похожее название

Добрый день!
Есть два файла . В одном-база база данных, а другой -заявка
Baza (данных) это:
Колонка А- одиннадцатизначный код
колонка С- наимен.товара и чертеж
11000000034 ...... Prokladka dizelja 11D40 45.567.sb.
Zajavka - это :
колонка В- код (если он есть, но иногда его нет)
колонка D- наимен.товара и чертеж , причем название товара может быть написано не так как в базе ,например ( DIZ. prokladka М62 ) да и чертеж
может быть расписан (11D 40. 45/567 сб)
............. ..... DIZ. prokladka М62 11D 40. 45/567 сб
Список заявок состоит из одной или нескольких позиций(строк) и каждая заявка отделена пустой строкой
Надо поставить в Zajavke в тех строках, где нет кода - код из "Baza"
Т.е. Отмечаем строку в Zajavke , где нет кода , запускаем макрос
и он в форме показывает примерные совпадения названий, которые он выберет из базы с кодами . В форме выбираем название какое нам подходит, даем команду "написать" и она добавит код
Как это сделать?
Romuald вне форума
Старый 11.12.2007, 04:56   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не могли бы Вы уточнить: по каким совпадениям в названии необходимо искать "похожие" ("примерные")? По всем словам?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 11.12.2007, 05:35   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

И еще вопрос-предложение.
В целях упрощения задачи и ускорения выполнения данной процедуры, может устроит так:
1) Создать два элемента управления "кнопка", одну в файле "Baza", другую в "Zajavka" (или, например, назначить комбинацию клавиш для запуска макроса).
2) Отмечаем строку в Zajavke , где нет кода , запускаем макрос (жмем кнопку).
3) В результате отобразится файл "Baza" со скрытыми "непохожими" строками.
4) Отмечаем строку в Baze , которую считаем нужной, запускаем макрос (жмем кнопку).
Все. UserForm создавать не нужно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 11.12.2007, 11:56   #4
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Вот файл "zajavka "Но вот в некоторых заявках нет САП-кода и по-этому потом после прихода из фирмы на склад,
приходится вручную сравнивать с названиями и чертежами находить и
присваивать код
Вложения
Тип файла: zip Zajavki firm.zip (72.2 Кб, 36 просмотров)
Romuald вне форума
Старый 11.12.2007, 12:29   #5
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Вот файл "Baza"
SAS888 ! Ваше предложение очень интересное и тем более что Вы предлогаете упростить это решение. Спасибо огромное
А отбор надо сделать по слову или по группе цифр . Название может быть поменяно местами (краска фасадная 35.00,346/3 или "краска фасад.35.346.3 " или "фасадная краска 35.346.03 или просто "краска 35.346.003 " .Наверно пусть ищет из названия по четкому совпадению из названия , как здесь например "краска" и по числу из чертежа " 343"
и оставит те наименования у которых есть ка можно больше совпадений
Вложения
Тип файла: zip Baza dannih SAP.zip (311.6 Кб, 52 просмотров)
Romuald вне форума
Старый 11.12.2007, 14:00   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Значит так:
Условие: оба файла открыты (если нужно, то можно это и проверять)
Файл "Zajavki firm.xls" должен содержать модуль с кодом:

Код:
Sub SelectObj()

    Dim x As String, y As String
    Dim i As Long, j As Long, h As Long
    Application.ScreenUpdating = False
    x = Application.Trim(Cells(ActiveCell.Row, 4))
    If Not (IsEmpty(x)) Then A = Split(x, " ") Else Exit Sub 'массив слов для совпадения
    Windows("Baza dannih SAP.xls").Activate
    Sheets("Sheet1").Select
        'Проверяем ячейки со 2 строки до конца таблицы
    For i = 2 To ActiveSheet.Range("D65536").End(xlUp).Row
        For j = 0 To UBound(A)
            y = Application.Trim(Cells(i, 3))
            If Not (IsEmpty(y)) Then B = Split(y, " ") Else GoTo Metka 'массив слов текущей строки
            For h = 0 To UBound(B)
                If B(h) = A(j) Then Cells(i, 20) = 1 'пометим нужные строки
            Next h
        Next j
Metka: Next i
        'Скроем ненужные строки
    For i = 2 To ActiveSheet.Range("D65536").End(xlUp).Row
        If Cells(i, 20) <> 1 Then Cells(i, 3).EntireRow.Hidden = True
    Next i
    Columns(20).ClearContents 'очистим пометки

End Sub
Выбрав нужное и запустив этот макрос, получим "похожие" строки из файла базы.
Файл "Baza dannih SAP.xls" должен содержать модуль с кодом:

Код:
Sub InsertNum()

    Application.ScreenUpdating = False
    z = Cells(ActiveCell.Row, 1)
    Cells.Select
    Selection.EntireRow.Hidden = False
    Windows("Zajavki firm.xls").Activate
    Cells(ActiveCell.Row, 2) = z
    
End Sub
Выбрав нужное, запустить этот макрос и все готово.
Как запускать макрос - дело вкуса.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.12.2007, 12:07   #7
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

SAS 888
С П А С И Б О О Г Р О М Н О Е
Работает все как надо
Подскажите, пожалуйста а если База и Заявки находятся в одном файле ?
И подскажите, как сделать - если после просмотра отобранных названий мне они не подходят, когда я активизирую Заявки, автоматически анхайдилось в Базе ?
Romuald вне форума
Старый 12.12.2007, 12:49   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1) Если База и Заявки находятся в одном файле, например, пусть лист с Базой имеет имя "Baza", а лист с заявками имеет имя "Zajavka", тогда из макроса "SelectObj()" нужно удалить строку 8 (Windows("Baza dannih SAP.xls").Activate ), а строку 9 изменить на Sheets("Baza").Select т. е. выбрать нужный лист в нужной книге (подставьте Ваши имена).
В макросе "InsertNum()" строку 7 (Windows("Zajavki firm.xls").Activate), заменить на Sheets("Zajavka").Select
2) Ни одно предложенное название не подходит.
Нужно выделить любую ячейку под таблицей (т. е. ячейку в строке у которой в первом столбце пусто), и запустить макрос "InsertNum()".
3) Что нужно делать автоматически я что-то не понял. Прошу по точнее.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.12.2007, 13:13   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Еще, мне кажется, Вам может оказаться полезным следующее:
Например, ищем "похожие" слова для строки "AAA BBB CCC 16 mm". Строк, содержащих "mm" найдется очень много.
Предлагаю создать исключения для поиска. Например, пусть нужно найти все "похожие" строки, но не сравнивая их по словам "mm" и "-" (тире). Тогда в макросе "SelectObj()" фрагмент
Код:
For h = 0 To UBound(B)  
    If B(h) = A(j) Then Cells(i, 20) = 1 'пометим нужные строки  
Next h
нужно заменить на
Код:
For h = 0 To UBound(B)
        Select Case B(h)
        Case "mm"
            GoTo Metka2
        Case "-"
            GoTo Metka2
        Case A(j)
            Cells(i, 20) = 1 'пометим нужные строки
        End Select
Metka2: Next h
В Select Case можно вставить необходимые исключения.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.12.2007, 15:32   #10
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Сделал в одном файле но че-то отбор не хочет идти
Вложения
Тип файла: zip Zajavki firmProba.zip (270.9 Кб, 33 просмотров)
Romuald вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Название окна приложения King Nothing Win Api 8 27.01.2009 17:11
Как изменить название темы? veter_s_morya О форуме и сайтах клуба 1 24.06.2008 09:17
макросом дополнить название Romuald Microsoft Office Excel 2 22.05.2008 17:31
название для кода Romuald Microsoft Office Excel 2 25.03.2008 09:52