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

Вход

Регистрация

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

 

= Мир MS Excel/Формула на поиск совпадений списка слов в списке предложений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формула на поиск совпадений списка слов в списке предложений (Формулы/Formulas)
Формула на поиск совпадений списка слов в списке предложений
Gewanfa Дата: Вторник, 17.01.2017, 17:31 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, уважаемые знатоки!
У меня вопрос по Excel, который может решить судьбу целого проекта.
Я занимаюсь письменными переводами, в данном проекте столкнулся со следующей проблемой:
В прикрепленном файле на листе Текст в столбце А расположены тексты, которые я должен перевести на русский (только четные строки, ссылки не переводятся), условие для перевода находятся на листе Вокабуляр. Там заказчиком даны пары утвержденного перевода (исходник на английском, перевод на русском), то есть как только я в своем задании (лист Текст) встречаю слово на английском из столбца А листа Вокабуляр, я должен перевести его именно как указано в соответствующей ячейке столбца В. Вся проблема в том, что на листе Текст у меня более 4000 сток, а на листе Вокабуляр более 1500 строк, то есть поштучно проверять каждую строку из листа Текст на наличие совпадений со столбцом А в листе Вокабуляр займет примерно полгода..
Как я хочу упростить себе жизнь? В столбце В листа Текст задать такую формулу, которая проверяла бы наличие текста любой ячейки списка из столбца А листа Вокабуляр в тексте ячейки столбца А листа Текст, и не просто проверяла бы, а подставляла бы соответствующую пару из листа Вокабуляр в ячейки В и С (или другие), усложняет проблему тот факт, что в ячейке столбца А листа Текст может встречаться несколько ячеек из столбца А листа Вокабуляр.
Прошу помощи у специалистов по Excel в решении этой непростой проблемы.
Всем откликнувшимся заранее огромное спасибо!
К сообщению приложен файл: 5290489.xls (29.5 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые знатоки!
У меня вопрос по Excel, который может решить судьбу целого проекта.
Я занимаюсь письменными переводами, в данном проекте столкнулся со следующей проблемой:
В прикрепленном файле на листе Текст в столбце А расположены тексты, которые я должен перевести на русский (только четные строки, ссылки не переводятся), условие для перевода находятся на листе Вокабуляр. Там заказчиком даны пары утвержденного перевода (исходник на английском, перевод на русском), то есть как только я в своем задании (лист Текст) встречаю слово на английском из столбца А листа Вокабуляр, я должен перевести его именно как указано в соответствующей ячейке столбца В. Вся проблема в том, что на листе Текст у меня более 4000 сток, а на листе Вокабуляр более 1500 строк, то есть поштучно проверять каждую строку из листа Текст на наличие совпадений со столбцом А в листе Вокабуляр займет примерно полгода..
Как я хочу упростить себе жизнь? В столбце В листа Текст задать такую формулу, которая проверяла бы наличие текста любой ячейки списка из столбца А листа Вокабуляр в тексте ячейки столбца А листа Текст, и не просто проверяла бы, а подставляла бы соответствующую пару из листа Вокабуляр в ячейки В и С (или другие), усложняет проблему тот факт, что в ячейке столбца А листа Текст может встречаться несколько ячеек из столбца А листа Вокабуляр.
Прошу помощи у специалистов по Excel в решении этой непростой проблемы.
Всем откликнувшимся заранее огромное спасибо!

Автор - Gewanfa
Дата добавления - 17.01.2017 в 17:31
krosav4ig Дата: Вторник, 17.01.2017, 17:52 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
так нужно?
Код
=ЕСЛИОШИБКА(ИНДЕКС(Вокабуляр!$B:$B;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(Текст!$A1;"*"&Вокабуляр!$A$2:$A$20&"*");СТРОКА(Вокабуляр!$A$2:$A$20));СТОЛБЕЦ(Текст!A1)));"")
К сообщению приложен файл: 9645056.xls (45.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
так нужно?
Код
=ЕСЛИОШИБКА(ИНДЕКС(Вокабуляр!$B:$B;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(Текст!$A1;"*"&Вокабуляр!$A$2:$A$20&"*");СТРОКА(Вокабуляр!$A$2:$A$20));СТОЛБЕЦ(Текст!A1)));"")

Автор - krosav4ig
Дата добавления - 17.01.2017 в 17:52
bmv98rus Дата: Вторник, 17.01.2017, 17:54 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Gewanfa,

Есть ли причина не просто заменить в исходнике найденные фразы переведенными? Я не о том что это можно делать руками, я о самом результате? В чем для вас смысл иметь столбцы B и С? или это необходимсоть? Автоматизировать замену не сложно просто, хотя и то что вы хотиите можно выполить скриптом, а вон и формулу написали, разве что 4000 x 1500 небыстро будет, ну и если будет разная комбинация встречаттся то покажет только одну. Там предусмотрено несколько , но это еще расчеты.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 17.01.2017, 18:05
 
Ответить
СообщениеGewanfa,

Есть ли причина не просто заменить в исходнике найденные фразы переведенными? Я не о том что это можно делать руками, я о самом результате? В чем для вас смысл иметь столбцы B и С? или это необходимсоть? Автоматизировать замену не сложно просто, хотя и то что вы хотиите можно выполить скриптом, а вон и формулу написали, разве что 4000 x 1500 небыстро будет, ну и если будет разная комбинация встречаттся то покажет только одну. Там предусмотрено несколько , но это еще расчеты.

Автор - bmv98rus
Дата добавления - 17.01.2017 в 17:54
Gewanfa Дата: Вторник, 17.01.2017, 18:08 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
krosav4ig, Спасибо за внимание, формула работает, но не совсем то, что нужно.

bmv98rus, в том то и дело, что мне нужно видеть пару "исходник-перевод", так как непосредственно перевод я буду выполнять сам руками, автоматизированно никак не получится, и посмотрев на "пару" из вокабуляра я увижу, что именно вот это слово я должен перевести именно так.

Вариант, который предоставил krosav4ig, сразу подставляет перевод, но для меня более информативно будет присутствие пары "исходник-перевод", опять же повторюсь, потому что перевод я буду выполнять сам.

Как вариант может быть разбить данную задачу на 2 этапа, сначала для столбца В составить формулу, которая возвратит найденный "исходник" (или несколько исходников, как? через запятую, в разных ячейках?), а потом в следующем столбце задать формулу, которая подставит вместо исходника перевод. В результате я увижу именно желаемую "пару". Вопрос останется только, если обнаружится несколько Исходников в ячейке столбца А листа Текст.

P.S.
Для упрощения могу сказать, что в каждой ячейке листа Текст будет не больше 5 "исходников" (просто по опыту переводов), а если будут, то можно ими пренебречь.

P.S.S.: Или можно изначально сделать один дополнительный столбец, в котором объединить содержание ячеек исходника и перевода через разделитель (тоесть пара будет прописана в одной ячейке через разделитель), а в формуле ссылаться на этот доп столбец, чтобы в итоге возвращалась именно пара.


Сообщение отредактировал Gewanfa - Вторник, 17.01.2017, 18:37
 
Ответить
Сообщениеkrosav4ig, Спасибо за внимание, формула работает, но не совсем то, что нужно.

bmv98rus, в том то и дело, что мне нужно видеть пару "исходник-перевод", так как непосредственно перевод я буду выполнять сам руками, автоматизированно никак не получится, и посмотрев на "пару" из вокабуляра я увижу, что именно вот это слово я должен перевести именно так.

Вариант, который предоставил krosav4ig, сразу подставляет перевод, но для меня более информативно будет присутствие пары "исходник-перевод", опять же повторюсь, потому что перевод я буду выполнять сам.

Как вариант может быть разбить данную задачу на 2 этапа, сначала для столбца В составить формулу, которая возвратит найденный "исходник" (или несколько исходников, как? через запятую, в разных ячейках?), а потом в следующем столбце задать формулу, которая подставит вместо исходника перевод. В результате я увижу именно желаемую "пару". Вопрос останется только, если обнаружится несколько Исходников в ячейке столбца А листа Текст.

P.S.
Для упрощения могу сказать, что в каждой ячейке листа Текст будет не больше 5 "исходников" (просто по опыту переводов), а если будут, то можно ими пренебречь.

P.S.S.: Или можно изначально сделать один дополнительный столбец, в котором объединить содержание ячеек исходника и перевода через разделитель (тоесть пара будет прописана в одной ячейке через разделитель), а в формуле ссылаться на этот доп столбец, чтобы в итоге возвращалась именно пара.

Автор - Gewanfa
Дата добавления - 17.01.2017 в 18:08
bmv98rus Дата: Вторник, 17.01.2017, 18:35 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
krosav4ig,
Продемонстрируйте пож поиск второго и следующего вхождений. авторство за Вами. насколько я вижу - все готово у вас Ну и перевод для порядка, во вторую ячейку. Судя по всему лучше тогда для скорости номер строки выводить а после по ней пару, чтоб дважды не считать. Я позолил внести идменения, но незначительный.

Gewanfa,
Но я предупреждал, когда будет 4000 x 1500 x n вхождений - будет печально, но явно быстрее ручного.
К сообщению приложен файл: Copy_of_9645056.xls (49.5 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 17.01.2017, 21:45
 
Ответить
Сообщениеkrosav4ig,
Продемонстрируйте пож поиск второго и следующего вхождений. авторство за Вами. насколько я вижу - все готово у вас Ну и перевод для порядка, во вторую ячейку. Судя по всему лучше тогда для скорости номер строки выводить а после по ней пару, чтоб дважды не считать. Я позолил внести идменения, но незначительный.

Gewanfa,
Но я предупреждал, когда будет 4000 x 1500 x n вхождений - будет печально, но явно быстрее ручного.

Автор - bmv98rus
Дата добавления - 17.01.2017 в 18:35
_Boroda_ Дата: Вторник, 17.01.2017, 23:05 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вариант макросом
[vba]
Код
Sub tt()
    Dim sh1 As Worksheet, sh2 As Worksheet, ar3
    Set sh1 = Sheets("Òåêñò")
    Set sh2 = Sheets("Âîêàáóëÿð")
    With sh1
        r1_ = .Range("A" & Rows.Count).End(xlUp).Row
        If r1_ < 2 Then Exit Sub
        ar1 = .Range("A1").Resize(r1_)
        .Columns("B:F").ClearContents
    End With
    With sh2
        r2_ = .Range("A" & Rows.Count).End(xlUp).Row - 1
        If r2_ < 1 Then Exit Sub
        ar2 = .Range("A2").Resize(r2_, 2)
    End With
    ReDim ar3(1 To r1_, 1 To 5)
    For i = 2 To r1_ Step 2
        ar1(i, 1) = LCase(ar1(i, 1))
        n_ = 0
        For j = 1 To r2_
            If InStr(ar1(i, 1), LCase(ar2(j, 1))) Then
                n_ = n_ + 1
                ar3(i, n_) = ar2(j, 1) & vbLf & ar2(j, 2)
            End If
        Next j
    Next i
    sh1.Range("B1").Resize(r1_, 5) = ar3
End Sub
[/vba]
Реальные значения вставляйте прямо в этот файл и жмите кнопку
К сообщению приложен файл: 5290489_1.xls (51.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВариант макросом
[vba]
Код
Sub tt()
    Dim sh1 As Worksheet, sh2 As Worksheet, ar3
    Set sh1 = Sheets("Òåêñò")
    Set sh2 = Sheets("Âîêàáóëÿð")
    With sh1
        r1_ = .Range("A" & Rows.Count).End(xlUp).Row
        If r1_ < 2 Then Exit Sub
        ar1 = .Range("A1").Resize(r1_)
        .Columns("B:F").ClearContents
    End With
    With sh2
        r2_ = .Range("A" & Rows.Count).End(xlUp).Row - 1
        If r2_ < 1 Then Exit Sub
        ar2 = .Range("A2").Resize(r2_, 2)
    End With
    ReDim ar3(1 To r1_, 1 To 5)
    For i = 2 To r1_ Step 2
        ar1(i, 1) = LCase(ar1(i, 1))
        n_ = 0
        For j = 1 To r2_
            If InStr(ar1(i, 1), LCase(ar2(j, 1))) Then
                n_ = n_ + 1
                ar3(i, n_) = ar2(j, 1) & vbLf & ar2(j, 2)
            End If
        Next j
    Next i
    sh1.Range("B1").Resize(r1_, 5) = ar3
End Sub
[/vba]
Реальные значения вставляйте прямо в этот файл и жмите кнопку

Автор - _Boroda_
Дата добавления - 17.01.2017 в 23:05
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формула на поиск совпадений списка слов в списке предложений (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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