powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение данных (Excel)
11 сообщений из 11, страница 1 из 1
Сравнение данных (Excel)
    #36629959
Сергей846
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как можно сравнить значения двух противоположных ячеек. Например есть таблица, в ней две колонки: 1-я ФИО_Ведомость, 2-я ФИО_подгруж., так вот надо 2-ю колонку сравнить с 1-ой. и в отдельной колонке вывести количество допущенных ошибок. Если бы они всегда имели одинаковое кол-во символов, но бывает когда Иванов=Ианов ошибка одна, Иванов=Ивонов тоже одна, Иванов=Еванив 2 ошибки и.т.д. т.е. надо сравнить В1 с А1, В2 с А2 и т.д. Заранее спасибо.
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629961
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Водка и Пиво - это сколько ошибок?
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629964
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иванов и Иваеенов - сколько ошибок?
Иванов и Иваееноеев - сколько ошибок?

вопрос возникает из-за того, что нужно придумывать алгоритм поиска возобновления правильной комбинации, а это будет довольно непросто
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629969
Сергей846
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВодка и Пиво - это сколько ошибок?
Здесь ошибок нет
А елс серьезно,сам ломаю голову, если бы было одинаковое кол-во символов то сравнение можно было определить сколько символов в ячейке В различаются с ячейкой А. Основа для сравнения (т.е. правильное ФИО) - это ФИО в ячейке А. Думаю наверное не получится т.к.
Иванов и Иваеенов - можно посчитать и 5 так как изменилось расположение символов "еенов" но для моего случая только 2 т.е. лишние "ее"
Иванов и Иваееноеев - 4
Просто приходится сверять такие ведомости вручную, т.е. глазами а записей в них 3000-5000 штук. Допускается одна ошибка (т.е. 1 пропущенный символ или 1 лишний символ или 1 различающийся). Думал как то реализовать отбор таких ФИО.
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629971
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот такую штуку в подарок не желаете?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
?CStr(Round(CompStr("Иванов","Ивонов")* 100 ))+"%"
 60 %
?CStr(Round(CompStr("Иванов","Ивнов")* 100 ))+"%"
 53 %
?CStr(Round(CompStr("Иванов","Петров")* 100 ))+"%"
 20 %
?CStr(Round(CompStr("Иванов","Люся")* 100 ))+"%"
 0 %
?CStr(Round(CompStr("Иванов","Иванов")* 100 ))+"%"
 100 %
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей846Допускается одна ошибка (т.е. 1 пропущенный символ или 1 лишний символ или 1 различающийся). Думал как то реализовать отбор таких ФИО.

Так вы определитесь.
Если вам нужно посчитать количество ошибок - это одно
Если нужно определить - одна ошибка или несколько - совсем другое!
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629981
Сергей846
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА вот такую штуку в подарок не желаете?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
?CStr(Round(CompStr("Иванов","Ивонов")* 100 ))+"%"
 60 %
?CStr(Round(CompStr("Иванов","Ивнов")* 100 ))+"%"
 53 %
?CStr(Round(CompStr("Иванов","Петров")* 100 ))+"%"
 20 %
?CStr(Round(CompStr("Иванов","Люся")* 100 ))+"%"
 0 %
?CStr(Round(CompStr("Иванов","Иванов")* 100 ))+"%"
 100 %


Этот метод в полне подходит. Спасибо! То что надо. Только как его реализовать в Excel?
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629990
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей846Этот метод в полне подходит. Спасибо! То что надо. Только как его реализовать в Excel?

А-а-а-а. Это дурацкая функция, придуманная мной на заре учебы программированию
Впрочем с тех пор успешно сравнивающая мне текстовые строки на "похожесть".

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Function CompStr(Str1 As String, Str2 As String) As Single

Dim Word As Integer, likeness As Long, i As Integer
Dim maxn As Integer, k As Integer
Dim s1 As String, s2 As String
Word =  3 : likeness =  0 
s1 = Trim(CutDblSpaces(IIf(Len(Str1) > Len(Str2), Str1, Str2)))
s2 = Trim(CutDblSpaces(IIf(Len(Str1) > Len(Str2), Str2, Str1)))

If Len(s1) < Word +  1  Or Len(s2) < Word +  1  Then
  CompStr = IIf(s1 = s2,  1 ,  0 )
  Exit Function
End If

For i =  1  To Len(s1) - Word +  1 
  maxn =  0 
  k = InStr( 1 , s2, Mid$(s1, i, Word))
  Do Until k =  0 
    If Len(s1) - Abs(k - i) > maxn Then maxn = Len(s1) - Abs(k - i)
    k = InStr(k +  1 , s2, Mid$(s1, i, Word))
  Loop
  likeness = likeness + maxn
Next
CompStr = likeness / (Len(s1) * (Len(s1) - Word +  1 ))
  
End Function

Но есть нюанс. Функцию я эксплуатирую на строках примерно 100-300 символов и заточена она для того, чтобы эффективно сравнивать фразы, слова в которых могут быть переставлены местами.

Для такого короткого сравнения как "Иванов" она достаточно громоздка. Кроме того, если вы все-таки будете ее использовать для коротких строк, поменяйте в начале Word = 3 на Word = 2 .

Но она-таки вам не нужна, если задача стоит определить "одна" или "несколько" ошибок.
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629991
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА вот такую штуку в подарок не желаете?
Код: plaintext
?CStr(Round(CompStr("Иванов","воновИ")* 100 ))+"%"

А в таком варианте каков ответ?
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36629992
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMShocker.ProА вот такую штуку в подарок не желаете?
Код: plaintext
?CStr(Round(CompStr("Иванов","воновИ")* 100 ))+"%"

А в таком варианте каков ответ?

33%
Как я уже сказал, заточена функция на поиск перестановок, и чем короче строка, тем больше ее неадекватность.
...
Рейтинг: 0 / 0
Сравнение данных (Excel)
    #36630089
Ihtiandrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей,
можно попробовать булево сравнение всех столбцов для выявления некорректных записей
=(A1=B1)*(C1=D1)*(E1=F1)
Потом можно автофильтром найти некорретные записи со значением "0"
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнение данных (Excel)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]