Здравствуйте, уважаемые знатоки! У меня вопрос по Excel, который может решить судьбу целого проекта. Я занимаюсь письменными переводами, в данном проекте столкнулся со следующей проблемой: В прикрепленном файле на листе Текст в столбце А расположены тексты, которые я должен перевести на русский (только четные строки, ссылки не переводятся), условие для перевода находятся на листе Вокабуляр. Там заказчиком даны пары утвержденного перевода (исходник на английском, перевод на русском), то есть как только я в своем задании (лист Текст) встречаю слово на английском из столбца А листа Вокабуляр, я должен перевести его именно как указано в соответствующей ячейке столбца В. Вся проблема в том, что на листе Текст у меня более 4000 сток, а на листе Вокабуляр более 1500 строк, то есть поштучно проверять каждую строку из листа Текст на наличие совпадений со столбцом А в листе Вокабуляр займет примерно полгода.. Как я хочу упростить себе жизнь? В столбце В листа Текст задать такую формулу, которая проверяла бы наличие текста любой ячейки списка из столбца А листа Вокабуляр в тексте ячейки столбца А листа Текст, и не просто проверяла бы, а подставляла бы соответствующую пару из листа Вокабуляр в ячейки В и С (или другие), усложняет проблему тот факт, что в ячейке столбца А листа Текст может встречаться несколько ячеек из столбца А листа Вокабуляр. Прошу помощи у специалистов по Excel в решении этой непростой проблемы. Всем откликнувшимся заранее огромное спасибо!
Здравствуйте, уважаемые знатоки! У меня вопрос по Excel, который может решить судьбу целого проекта. Я занимаюсь письменными переводами, в данном проекте столкнулся со следующей проблемой: В прикрепленном файле на листе Текст в столбце А расположены тексты, которые я должен перевести на русский (только четные строки, ссылки не переводятся), условие для перевода находятся на листе Вокабуляр. Там заказчиком даны пары утвержденного перевода (исходник на английском, перевод на русском), то есть как только я в своем задании (лист Текст) встречаю слово на английском из столбца А листа Вокабуляр, я должен перевести его именно как указано в соответствующей ячейке столбца В. Вся проблема в том, что на листе Текст у меня более 4000 сток, а на листе Вокабуляр более 1500 строк, то есть поштучно проверять каждую строку из листа Текст на наличие совпадений со столбцом А в листе Вокабуляр займет примерно полгода.. Как я хочу упростить себе жизнь? В столбце В листа Текст задать такую формулу, которая проверяла бы наличие текста любой ячейки списка из столбца А листа Вокабуляр в тексте ячейки столбца А листа Текст, и не просто проверяла бы, а подставляла бы соответствующую пару из листа Вокабуляр в ячейки В и С (или другие), усложняет проблему тот факт, что в ячейке столбца А листа Текст может встречаться несколько ячеек из столбца А листа Вокабуляр. Прошу помощи у специалистов по Excel в решении этой непростой проблемы. Всем откликнувшимся заранее огромное спасибо!Gewanfa
Есть ли причина не просто заменить в исходнике найденные фразы переведенными? Я не о том что это можно делать руками, я о самом результате? В чем для вас смысл иметь столбцы B и С? или это необходимсоть? Автоматизировать замену не сложно просто, хотя и то что вы хотиите можно выполить скриптом, а вон и формулу написали, разве что 4000 x 1500 небыстро будет, ну и если будет разная комбинация встречаттся то покажет только одну. Там предусмотрено несколько , но это еще расчеты.
Gewanfa,
Есть ли причина не просто заменить в исходнике найденные фразы переведенными? Я не о том что это можно делать руками, я о самом результате? В чем для вас смысл иметь столбцы B и С? или это необходимсоть? Автоматизировать замену не сложно просто, хотя и то что вы хотиите можно выполить скриптом, а вон и формулу написали, разве что 4000 x 1500 небыстро будет, ну и если будет разная комбинация встречаттся то покажет только одну. Там предусмотрено несколько , но это еще расчеты.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Вторник, 17.01.2017, 18:05
krosav4ig, Спасибо за внимание, формула работает, но не совсем то, что нужно.
bmv98rus, в том то и дело, что мне нужно видеть пару "исходник-перевод", так как непосредственно перевод я буду выполнять сам руками, автоматизированно никак не получится, и посмотрев на "пару" из вокабуляра я увижу, что именно вот это слово я должен перевести именно так.
Вариант, который предоставил krosav4ig, сразу подставляет перевод, но для меня более информативно будет присутствие пары "исходник-перевод", опять же повторюсь, потому что перевод я буду выполнять сам.
Как вариант может быть разбить данную задачу на 2 этапа, сначала для столбца В составить формулу, которая возвратит найденный "исходник" (или несколько исходников, как? через запятую, в разных ячейках?), а потом в следующем столбце задать формулу, которая подставит вместо исходника перевод. В результате я увижу именно желаемую "пару". Вопрос останется только, если обнаружится несколько Исходников в ячейке столбца А листа Текст.
P.S. Для упрощения могу сказать, что в каждой ячейке листа Текст будет не больше 5 "исходников" (просто по опыту переводов), а если будут, то можно ими пренебречь.
P.S.S.: Или можно изначально сделать один дополнительный столбец, в котором объединить содержание ячеек исходника и перевода через разделитель (тоесть пара будет прописана в одной ячейке через разделитель), а в формуле ссылаться на этот доп столбец, чтобы в итоге возвращалась именно пара.
krosav4ig, Спасибо за внимание, формула работает, но не совсем то, что нужно.
bmv98rus, в том то и дело, что мне нужно видеть пару "исходник-перевод", так как непосредственно перевод я буду выполнять сам руками, автоматизированно никак не получится, и посмотрев на "пару" из вокабуляра я увижу, что именно вот это слово я должен перевести именно так.
Вариант, который предоставил krosav4ig, сразу подставляет перевод, но для меня более информативно будет присутствие пары "исходник-перевод", опять же повторюсь, потому что перевод я буду выполнять сам.
Как вариант может быть разбить данную задачу на 2 этапа, сначала для столбца В составить формулу, которая возвратит найденный "исходник" (или несколько исходников, как? через запятую, в разных ячейках?), а потом в следующем столбце задать формулу, которая подставит вместо исходника перевод. В результате я увижу именно желаемую "пару". Вопрос останется только, если обнаружится несколько Исходников в ячейке столбца А листа Текст.
P.S. Для упрощения могу сказать, что в каждой ячейке листа Текст будет не больше 5 "исходников" (просто по опыту переводов), а если будут, то можно ими пренебречь.
P.S.S.: Или можно изначально сделать один дополнительный столбец, в котором объединить содержание ячеек исходника и перевода через разделитель (тоесть пара будет прописана в одной ячейке через разделитель), а в формуле ссылаться на этот доп столбец, чтобы в итоге возвращалась именно пара.Gewanfa
Сообщение отредактировал Gewanfa - Вторник, 17.01.2017, 18:37
krosav4ig, Продемонстрируйте пож поиск второго и следующего вхождений. авторство за Вами. насколько я вижу - все готово у вас Ну и перевод для порядка, во вторую ячейку. Судя по всему лучше тогда для скорости номер строки выводить а после по ней пару, чтоб дважды не считать. Я позолил внести идменения, но незначительный.
Gewanfa, Но я предупреждал, когда будет 4000 x 1500 x n вхождений - будет печально, но явно быстрее ручного.
krosav4ig, Продемонстрируйте пож поиск второго и следующего вхождений. авторство за Вами. насколько я вижу - все готово у вас Ну и перевод для порядка, во вторую ячейку. Судя по всему лучше тогда для скорости номер строки выводить а после по ней пару, чтоб дважды не считать. Я позолил внести идменения, но незначительный.
Gewanfa, Но я предупреждал, когда будет 4000 x 1500 x n вхождений - будет печально, но явно быстрее ручного.bmv98rus
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] Реальные значения вставляйте прямо в этот файл и жмите кнопку
Вариант макросом [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_