Проблем с проверка...

6 отговора 235 прегледа
#1

Проблем с проверка...

Здравейте.
Имам файл, в клетките на колона “А” на който чрез периферно устройсво-четец се въвежда 11-символен буквено-цифров код (съдържащ букви и цифри!). Всички клетки са с текстов формат. Тъй като системата кодиране-четене е несъвършенна и понякога се допускат грешки, се налага проверка за дублиране на въвежданите в таблицата стойности. Това съм осигурил чрез Data -> Validation -> Custom -> Formula: =COUNTIF(A:A;A2...n)<2 на всички клетки с адреси от А2 до края.
Всичко работеше добре, докато не изникна необходимостта да се въвежда 33-символен цифров код (съдържащ само цифри!). И с ужас установих, че за някой стойности (не за всички!) Excel-чо не прави разлика в съдържанието на клетката, ако:
- е форматирана като текст;
- текстът съдържа >16 на брой символа;
- всички символи са цифри.
Например за 17-символен код:
различава
00020000000000011 от 00020000000000012
00200000000000011 от 00200000000000012

НЕразличава
02000000000000011 от 02000000000000012
20000000000000011 от 20000000000000012

Резултатът е че дава грешка за дублирана стойност, която всъщност не е.

Тук има примерен файл. В А2 е въведено 02000000000000011. Ако опитате в А3 да въведете 02000000000000012 (НЕ чрез копиране на клетки за да не се затрие формата/формулата!), би трябвало да ви пусне, тъй като 02000000000000011 &#8800; 02000000000000012. Но не става. За сметка на това ако в А2 въведете 00020000000000011, а в А3 – 00020000000000012, всичко е точно. Ааааааа!

Някакви идеи, защо се получава така?


Отговор
в отговор на stil #2

Re: Проблем с формула

Мдаааа. Днес имах малко свободно време и отново се борих с проблема. Нищо, с формули. С VBA – не знам. Но като гледам нищичко и от ваша страна. Пренебрегвам вероятността това да се дължи на незнание от вас. Или пък на негативно отношение към мен. К`во остава тогава? Ами... да не съм бил много ясен. Затова задавам въпроса по-простичко/конкретничко/кратичко.
Ако А1 и Б1 са форматирани като “Text” и
А1 = 02000000000000011
B1 = 02000000000000012
C1 = COUNTIF(A1:B1;A1)
Защо горната формула връща 2?

Отговор
в отговор на stil #3

Re: Проблем с формула

C1 = COUNTIF(A1:B1;"=A1") така определено става.

Отговор
в отговор на stil #4

Re: Проблем с формула

Хммм, определено някой M$ програмист си е бъркал в носа, като е писал имплементацията
Можеш да го рипортваш на MS

Сега мога да ти предложа един обходен път (workaround)

1. Вмъкваш си една колонка (напр. B), която после ще скриеш (Hide)
2. За цялата колонка B слагаш формулата B1=IF(ISBLANK(A1);""; CONCATENATE("a";A1))
3. За цялата колонка A слагаш проверка =COUNTIF(B:B;B4)<2
4. Скриваш колонка B за да не ти дразни чувството за хармония


Съвсем произволно съм лепнал отпред "a". Можеш да сложиш почти кой да е нецифров символ

Отговор
в отговор на Zarev #5

Re: Не става

При мен не се получава – връща 0. Мисля, че когато се сложат кавички, Excel приема за критерий това, което е между тях, а не съдържанието на клетката.

Отговор
в отговор на NDeu #6

Re: OK!

NDeu, разбрах тънкият ти замисъл! Имам добре развито чувство за хармония, но в случая с този проблем то е изцяло притъпено. Трябваше ми таблица, която да върши работа, без значение как изглежда. Мисля, че твоето предложение ще ми свърши работа. За което сърдечно благодаря!

Сега малко разснения за останалите.
Явно е, че ако символният низ съдържа само цифри Excel-чо нещо се обърква. Достатъчно е да прибавим към стринга само един буквен символ и нещата се оправят. Това се доказва и от факта, че с буквено-цифровите символи, които използвах досега нямах проблеми. Всъщност проблемът не се появява и когато се използват само буквени символи.

Този начин за решаване на проблемите – чрез лекичко им “заобикаляне” винаги ме е възхищавал. Аз трудно го прилагам, затова
Ех понякога могат да се получат неочаквани и грешни резултати, но това не бива да води до неговото пълно отричане. Напротив трябва да се прилага винаги, когато е възможно.

Благодаря на всички, които с отзоваха!

Отговор
в отговор на stil #7

Re: OK!

Това може би обяснява нещата.

„Въпреки че можете да въвеждате в клетките до 16 000 символа, цифровите стойности могат да съдържат не повече от 15 символа.”

„За всички практически цели числова константа, форматирана като текст, все още се счита за число заради способността на Excel да разпознава числовите стойности.”

От „Всичко за Excel”

Отговор