|
|
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
Клетка A1 ="некоторое название" Столбец B:B содержит список названий препаратов (по одному названию в каждой строке) Как написать формулу, которая в клетке A2 возвращала "1", если название из A1 в точности совпадает с одним из названий из столбца B:B , иначе A2 = "0" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 15:37:22 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
F1Сравнивает две строки текста и возвращает значение ИСТИНА, если они в точности совпадают и ЛОЖЬ в противном случае. Функция СОВПАД учитывает регистр, но игнорирует различия в форматировании. Функция СОВПАД используется для того, чтобы проверить, входит ли некоторый текст в документ. Синтаксис СОВПАД(текст1;текст2) Текст1 — это первая текстовая строка. Текст2 — это вторая текстовая строка. Примеры СОВПАД("слово";"слово") равняется ИСТИНА СОВПАД("Слово";"слово") равняется ЛОЖЬ СОВПАД("с лово";"слово") равняется ЛОЖЬ Чтобы проверить, соответствует ли введенное пользователем значение одному из значений в интервале, следует ввести следующую формулу в ячейку как массив. Чтобы ввести формулу как массив в отдельную ячейку, нажмите клавиши CTRL+SHIFT+ENTER в Microsoft Excel для Windows или +ENTER в Microsoft Excel для Макинтош. Имя «ПроверяемоеЗначение» ссылается на ячейку, содержащую введенное пользователем значение; имя «ИнтервалДляСравнений» ссылается на список текстовых значений, с которыми производится сравнение. {=ИЛИ(СОВПАД(ПроверяемоеЗначение;ИнтервалДляСравнений))} {=ИЛИ(СОВПАД(A1;ДВССЫЛ("B1:B"&СЧЁТЗ(B:B))))} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 15:50:03 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
в хэлпе нашёл ещё функцию ВПР ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 15:53:41 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
Dark_ScorpionКлетка A1 ="некоторое название" Столбец B:B содержит список названий препаратов (по одному названию в каждой строке) Как написать формулу, которая в клетке A2 возвращала "1", если название из A1 в точности совпадает с одним из названий из столбца B:B , иначе A2 = "0" =(СУММПРОИЗВ((A1=B1:B200)*1)>0)*1 В точности делает то что вы хотели, т.е. либо "0", либо "1" Если в столбце В:В каждое значение встречается только 1 раз то можно короче =СУММПРОИЗВ((A1=B1:B200)*1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 18:01:43 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
Deggasad Dark_ScorpionКлетка A1 ="некоторое название" Столбец B:B содержит список названий препаратов (по одному названию в каждой строке) Как написать формулу, которая в клетке A2 возвращала "1", если название из A1 в точности совпадает с одним из названий из столбца B:B , иначе A2 = "0" =(СУММПРОИЗВ((A1=B1:B200)*1)>0)*1 В точности делает то что вы хотели, т.е. либо "0", либо "1" Если в столбце В:В каждое значение встречается только 1 раз то можно короче =СУММПРОИЗВ((A1=B1:B200)*1) Если фраза "в точности совпадает" не включает заглавность/строчность букв то [помимо навороченного варианта Deggasad] еще такие варианты в порядке моего предпочтения: =--ЕЧИСЛО(ПОИСКПОЗ(A1;B:B;0)) =--ИЛИ(СЧЁТЕСЛИ(B:B;"="&A1)) =--(СУММПРОИЗВ(--(B1:B200=A1))=1) KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 19:58:42 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
пардон третий вариант, из представленных мной выше, попал туда по ошибке. Я как раз собирался сказать, что этот способ (с СУММПРОИЗВ) самый медленный. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 20:03:25 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
KL (XL) [помимо навороченного варианта Deggasad] Ну я ничё не наворачивал, просто написал первое что в голову пришло. А теперь вот есть время подумать и вижу что правы вы, не самое удачное решение! KL (XL) еще такие варианты в порядке моего предпочтения: =--ЕЧИСЛО(ПОИСКПОЗ(A1;B:B;0)) Вот так ещё можно по такому же принципу: =-(ЕНД(ВПР(A1;B:B;1;0))-1) KL (XL) =--ИЛИ(СЧЁТЕСЛИ(B:B;"="&A1)) А это можно и короче: =И(СЧЁТЕСЛИ(B:B;A1))*1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 00:56:47 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
KL (XL) можно у Вас спросить, я уже раньше пытался задать этот вопрос: почему в функцие СУММПРОИЗВ например или в формуле массива нельзя использовать ссылки на целый столбец например так нельзя: =--(СУММПРОИЗВ(--(B:B=A1))=1) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 01:03:06 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
Deggasad KL (XL) =--ИЛИ(СЧЁТЕСЛИ(B:B;"="&A1)) А это можно и короче: =И(СЧЁТЕСЛИ(B:B;A1))*1 :-) - я пишу формулы на англ., поэтому OR для меня короче чем AND - *1 имеет ту же длинну что и --, но слегка медленнее - и да, ты прав, "="& - лишнее, это остаток от другого примера с ">"&A1 KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:50:59 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
Deggasad KL (XL) можно у Вас спросить, я уже раньше пытался задать этот вопрос: почему в функцие СУММПРОИЗВ например или в формуле массива нельзя использовать ссылки на целый столбец например так нельзя: =--(СУММПРОИЗВ(--(B:B=A1))=1) ??? Так уж дизайнеры Excel сделали, что для операций с массивами целая строка доступна, а целый столбец нет. Причины мне не известны :-( KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:55:01 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
KL (XL) :-) - я пишу формулы на англ., поэтому OR для меня короче чем AND Я предполагал! Я ж просто для потдержания разговора! KL (XL) Так уж дизайнеры Excel сделали, что для операций с массивами целая строка доступна, а целый столбец нет. Причины мне не известны :-( Ну если даже вы уверены, что так и должно быть, то я успокаиваюсь и принимаю как должное, а то покоя не давало, вдруг можно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:10:53 |
|
||
|
Excel - Проверка вхождения строки в диапазон строк
|
|||
|---|---|---|---|
|
#18+
DeggasadНу если даже вы уверены, что так и должно быть, то я успокаиваюсь и принимаю как должное, а то покоя не давало, вдруг можно! 1) А можно на ты? А то я себя чувствую старым, толстым, в очках и с портфелем подмышкой 2) Я скорее уверен в том, что оно так есть. А должно ли, меня спросить забыли - вдруг я какой сюрприз выдам ;-) 3) Вообще я не сторонник использования целых столбцов в Excel 2003 по трем причинам: - очень мало кто использует более 10.000 в Excel, и еще меньше тех, кто использует более 50.000 - почти все формулы/функции использующие целые столбцы значительно замедляются и увеличивают расход памяти (ИНДЕКС - одно из редких исключений), особенно функции точного поиска [ВПР(,,,ЛОЖЬ), ГПР(,,,ЛОЖЬ), ПОИСКПОЗ(,,ЛОЖЬ), СУММЕСЛИ(), СЧЕТЕСЛИ()]. В Excel 2003 существуют механизмы оптимизации расчетов (например Smart Recalculation: http://www.decisionmodels.com/calcsecrets.htm ), но это проблемы в целом не решает. Функции неточного поиска [ПРОСМОТР(), ВПР(,,,ИСТИНА), ГПР(,,,ИСТИНА), ПОИСКПОЗ(,,ИСТИНА)], к счастью, используют бинарный метод , но у них другая проблема: они похоже не игнорируют индексированные пустые ячейки. - использование целых столбцов увеличивает риск превышения лимита в 65.536 зависимостей на листе, что ведет к тотальной летучести всего листа: http://www.decisionmodels.com/calcsecretsd.htm KL [MVP - Microsoft Excel]и ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:12:57 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34483852&tid=2183073]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 371ms |

| 0 / 0 |
