Добрый день подскажите, имеются две таблицы: первая это инвентаризационная опись, вторая это записи сисадминов о том какие мат. ценности в каких кабинетах находятся, нужно осуществить поиск по наименованию из инвентаризационной описи во второй таблице записи сисадминов и если найдено совпадение по этому наименованию инвентарный номер поставить в записи сисадминов в отдельный столбец "Бухгалтерский номер", проблема в том что одно и тоже оборудование может быть записано по разному и совпадать могут только цифры модели какого-нибудь устройства. Каким способом решать задачу неважно, хоть формулы хоть макросы. Заранее спасибо!
Добрый день подскажите, имеются две таблицы: первая это инвентаризационная опись, вторая это записи сисадминов о том какие мат. ценности в каких кабинетах находятся, нужно осуществить поиск по наименованию из инвентаризационной описи во второй таблице записи сисадминов и если найдено совпадение по этому наименованию инвентарный номер поставить в записи сисадминов в отдельный столбец "Бухгалтерский номер", проблема в том что одно и тоже оборудование может быть записано по разному и совпадать могут только цифры модели какого-нибудь устройства. Каким способом решать задачу неважно, хоть формулы хоть макросы. Заранее спасибо!OB
Добрый день. Если я правильно понял задачу - можно пытаться писать UDF, и если пренебречь словами "Pro" и "Series" то может что и получится. Или можно непренебрегать - но тогда совпадений будет сильно меньше. А может я неправильно понял... результат ведь не показали P.S. Да там ещё какие-то м... путают раскладку... и вообще есть вопросы... Наугад... если не будет решения стандартными функциями.
[vba]
Код
Option Explicit
Function probook(s As String, r, ParamArray Rubbish()) As String Dim a, el, t$, tt$, i&, flag As Boolean
s = " " & UCase(s) & " " For Each el In Rubbish s = Replace(s, " " & UCase(el) & " ", " ", , , vbTextCompare) Next
a = Split(Application.Trim(s)) r = Intersect(r.Parent.UsedRange, r).Value For i = 1 To UBound(r) t = " " & r(i, 1) & " " t = Replace(UCase(t), "-", " ") t = Replace(t, "CORE", " ") 'спасаю одну позицию, думаю не помешает t = rus2eng(t) flag = True For Each el In a If InStr(t, UCase(" " & el & " ")) = 0 Then flag = False: Exit For Next If flag Then tt = tt & "/" & r(i, 2) Next If Len(tt) Then probook = Mid(tt, 2) End Function
Private Function rus2eng(s$) Dim arrEng, arrRus, i&
arrRus = Split("М Т О Н А Е Р С К В") arrEng = Split("M T O H A E P C K B") For i = 0 To UBound(arrRus) s = Replace(s, arrRus(i), arrEng(i)) Next rus2eng = s End Function
[/vba]
Добрый день. Если я правильно понял задачу - можно пытаться писать UDF, и если пренебречь словами "Pro" и "Series" то может что и получится. Или можно непренебрегать - но тогда совпадений будет сильно меньше. А может я неправильно понял... результат ведь не показали P.S. Да там ещё какие-то м... путают раскладку... и вообще есть вопросы... Наугад... если не будет решения стандартными функциями.
[vba]
Код
Option Explicit
Function probook(s As String, r, ParamArray Rubbish()) As String Dim a, el, t$, tt$, i&, flag As Boolean
s = " " & UCase(s) & " " For Each el In Rubbish s = Replace(s, " " & UCase(el) & " ", " ", , , vbTextCompare) Next
a = Split(Application.Trim(s)) r = Intersect(r.Parent.UsedRange, r).Value For i = 1 To UBound(r) t = " " & r(i, 1) & " " t = Replace(UCase(t), "-", " ") t = Replace(t, "CORE", " ") 'спасаю одну позицию, думаю не помешает t = rus2eng(t) flag = True For Each el In a If InStr(t, UCase(" " & el & " ")) = 0 Then flag = False: Exit For Next If flag Then tt = tt & "/" & r(i, 2) Next If Len(tt) Then probook = Mid(tt, 2) End Function
Private Function rus2eng(s$) Dim arrEng, arrRus, i&
arrRus = Split("М Т О Н А Е Р С К В") arrEng = Split("M T O H A E P C K B") For i = 0 To UBound(arrRus) s = Replace(s, arrRus(i), arrEng(i)) Next rus2eng = s End Function
Добрый день, то что вы написали очень помогло, но почему то не все наименования находит, т.е. которые точно есть в инвентаризационной описи он почему то не видит((( скажите а какие у Вас есть еще вопросы?
Добрый день, то что вы написали очень помогло, но почему то не все наименования находит, т.е. которые точно есть в инвентаризационной описи он почему то не видит((( скажите а какие у Вас есть еще вопросы?OB
Вопрос такой - как видите в решении, по одной позиции получено несколько бухгалтерских номеров, по многим другим - один номер на всех. Как с этим разбираться планируете?
Вопрос такой - как видите в решении, по одной позиции получено несколько бухгалтерских номеров, по многим другим - один номер на всех. Как с этим разбираться планируете?Hugo
Вот тут честно даже пока не думал, меня больше интересует как найти наименования которые есть но почему-то бух номер не копируется, может мне скинуть вам на почту файлы оригиналы, посмотрите?
Вот тут честно даже пока не думал, меня больше интересует как найти наименования которые есть но почему-то бух номер не копируется, может мне скинуть вам на почту файлы оригиналы, посмотрите?OB
Там в UDF алгоритм такой - в строках бухгалтерии ищутся все слова из строки админов, причём строки приводятся к одному регистру и у бухгалтеров заменяются русские символы на английские. Может быть заменять нужно и у сисадминов. Файлы смогу посмотреть только поздно вечером.
Там в UDF алгоритм такой - в строках бухгалтерии ищутся все слова из строки админов, причём строки приводятся к одному регистру и у бухгалтеров заменяются русские символы на английские. Может быть заменять нужно и у сисадминов. Файлы смогу посмотреть только поздно вечером.Hugo