2015-03-22 3 views
0

У меня есть две колонки русских глаголов в Excel, первая из которых - несовершенные глаголы, а вторая - совершенные. Однако они произвольно упорядочены, т. Е. Не спарены, тогда как я хотел бы, чтобы каждый совершенный глагол появлялся рядом с его несовершенной копией (где это применимо), т. Е. Я хочу, чтобы колонка совершенного глагола отсортировалась в соответствии с первым.Excel: Сопряжение Подобные ячейки

К сожалению, я понятия не имею, как достичь этого, не разыскивая несовершенного контрагента каждого совершенного глагола индивидуально и вручную соединяя их, что было бы ужасно длинным, поскольку в нем около 1200 глаголов. Итак, я надеялся, что Excel имеет некоторую функцию, которая связывает ячейки на основе сходства их содержимого (и поскольку данный совершенный глагол обычно выглядит очень похожим на его несовершенный аналог, это может гипотетически работать), а именно, который принимает ячейку из одной колонки и сравнивает его со всеми ячейками в другом столбце, чтобы найти, какой из них наиболее похож на него, чтобы он мог поставить его рядом с ним.

Когда я говорю об сходстве, я имею в виду совпадение символов, а именно, сколько персонажей разделяют между двумя ячейками, а также внимание к порядку символов. Итак, если данный совершенный глагол «выбрат», при проверке гипотетический механизм обнаружил бы «выбират» как самый похожий несовершенный глагол, имеющий все символы «выбрат» плюс один дополнительный, без перетасовки и два будут сопряжены. Между тем «выбрат» не ошибочно соединяется с «братом», поскольку, хотя «брата» происходит внутри «выбрат», существует разница в двух символах, тогда как разница в одном символе в случай «выбрать» с «выбиратом». Я надеюсь в этом есть смысл. Кстати, если это уместно, все написано на кириллице в листе Excel.

Помните, что когда я говорю о спаривании на основе сходства, я говорю не только о ячейках, начинающихся с одной и той же последовательности символов или заканчивая одной и той же последовательностью символов - я говорю об общих перекрытиях, в центр клеток к. Потому что, если мы идем по начальным последовательностям, «propylesosit» не будет спарен с «pylesosit», и если мы идем по завершающим последовательностям, «utihomirit» не будет спарен с «utihomirivat», несмотря на очевидные сходства последовательностей символов в этих пар терминах.

Итак, может ли Excel быть достаточно умным, чтобы достичь этого? Если да, может ли кто-нибудь сказать мне, как я могу активировать необходимый процесс? Имейте в виду, что я не понимаю в первую очередь Excel (например, я не могу даже подсчитать числовые ячейки), поэтому в ваших ответах, пожалуйста, выложите все как можно проще, сообщив мне, что нажать, где и что типа или скопируйте пасту, не ожидая, что я действительно что-нибудь пойму или что-нибудь придумаю.

Если это любая помощь, кто-то я знаю, удалось решить мою проблему частично, используя то, что выглядит следующим образом: "= ВПР (" "& LEFT (A4; LEN (A4)/2) &" "; B $ 1: $ B 851; 1; 0)"

Вот как это работает:

бегать - вздохнуть - убегать

брать - вспотеть - выбрать

висеть - встать на колени - свистнуть

воспитывать - выбрать - воспитать

Это первые четыре строки списка. Первая колонка состоит из несовершенных глаголов.Второй из них - это совершенные глаголы, упорядоченные случайным образом по сравнению с несовершенными глаголами (в алфавитном порядке в кластерах 100, и я понимаю, что я мог легко их легко объединить в алфавитном порядке вместе с алфавитными совершенными глаголами, но это не решило бы проблема из-за наличия префиксов, которые разрушали бы совпадение, - кроме того, существует значительно меньше совершенных глаголов, так что даже если бы не были проблематичные префиксы, совпадение рушилось бы, когда первый несовершенный глагол без совершенного аналога появляются). Третий - совершенный глагол, соответствующий несовершенному глаголу в первом столбце после сопоставления. Первые три строки на самом деле ошибочны (ложно сопоставлены), но в четвертой строке «воспитывать» правильно сочетается с «воспитать», и именно для «воспитать» я представил эту чуждо-выглядящую формулу.

В любом случае, меня не устраивает то, что предоставил мне человек, которого я знаю, потому что у меня больше нет доступа к нему, тогда как список глаголов теперь намного больше, чем он был (он написал формулу, когда я значительно меньше глаголов). Между тем, я не могу просто добавить новые глаголы на лист, который он подготовил, потому что это как-то уничтожает его формулу, а третий столбец заполняется #REF !, что бы это ни значило.

Итак, вы могли бы мне помочь? Я не прошу, чтобы вы полагались на формулу, данную человеком, которого я знаю, - что бы ни было эффективным, что вы думаете. Между тем, я не могу прикрепить лист глагола, потому что здесь нет кнопки прикрепленного файла, насколько я вижу.

Спасибо заранее

+0

Вы можете ссылаться на книгу, пожалуйста? –

+0

Как? Это не гиперссылка на WWW, и я не вижу опции файла прикрепления – user3221174

+0

загрузите ее где-нибудь или в офис 365 - вот список сайтов, которые вы можете использовать http://www.smashingapps.com/2009/05/22/6- more-free-file-hosting-websites-that-would-be-useful.html –

ответ

1

Насколько я знаю, не существует какой-либо встроенный в функции в Excel с можно измерить сходство между двумя словами. Есть несколько алгоритмов, которые могут измерять сходство, но не идеальны (это означает, что вам все равно нужно проверить, правильно ли они получены). Одним из них является Левенштейн Дистан (вы можете прочитать здесь что-то об этом: http://en.wikipedia.org/wiki/Levenshtein_distance).

И здесь вы можете найти алгоритм VBA: Levenshtein Distance in Excel.

+0

Спасибо за ответ, но обе ссылки, которые вы мне отправили, выглядят так, как будто они были написаны на китайском языке. Могу ли я просто скопировать вставку алгоритма, который появляется во второй ссылке (поток переполнения стека) где-то, и нажать enter, после чего он будет волшебным образом работать? Если да, то где его следует вставить? Если нет, можете ли вы предоставить мне инструкции? – user3221174

+0

Используйте последний алгоритм -> он самый быстрый. – Wiol

+0

Для этого просто скопируйте код в редактор VBA (чтобы открыть прессу alt + F11). Levenshtein Distance - это просто количество изменений, которые вы должны получить от одного слова к другому. Пример: Левенштейн («понедельник», «Мондайя») = 1, потому что вам нужно удалить букву «а» со второго слова. Левенштейн («понедельник», «Мондара») = 2, потому что вы замените «r» (на «y») и удалите «a». – Wiol

Смежные вопросы