Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск последовательности в части содержимого ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск последовательности в части содержимого ячеек
dum Дата: Четверг, 25.04.2013, 21:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Господа, у меня довольно специфическая задача, проконсультируйте, пожалуйста. Во множестве клеток содержимое имеет вид "NN XX:YY" - то есть номер из двух цифр, а за ним - время. Для редких клеток в начале проставляется, допустим, восклицательный знак - значение становится "!NN XX:YY". При этом больштнство клеток - пустые. Мне нужно добиться проверки корректности каждого столбца (например, в первой клетке столбца было значение TRUE/FALSE, корректен ли он). Столбец в моём случае считается "корректным", если NN принимает значения 01, 02, 03 и т.д. до некого максимального в данном столбце (для каждого столбца максимум может быть своим + номера идут не по порядку, а как им угодно + номера могут повторяться). Но если какой-то номер пропущен, то столбец неправильный. Могу ли я написать логическое выражение, которое проверяло бы это?

Отдельный подвопрос здесь - как определить максимальное значение NN для каждого столбца? (то есть - максимум от подстроки, интерпретированной как число - берутся либо первые два символа, либо второй и третий, если первый - восклицательный знак)

Заранее благодарю
 
Ответить
СообщениеГоспода, у меня довольно специфическая задача, проконсультируйте, пожалуйста. Во множестве клеток содержимое имеет вид "NN XX:YY" - то есть номер из двух цифр, а за ним - время. Для редких клеток в начале проставляется, допустим, восклицательный знак - значение становится "!NN XX:YY". При этом больштнство клеток - пустые. Мне нужно добиться проверки корректности каждого столбца (например, в первой клетке столбца было значение TRUE/FALSE, корректен ли он). Столбец в моём случае считается "корректным", если NN принимает значения 01, 02, 03 и т.д. до некого максимального в данном столбце (для каждого столбца максимум может быть своим + номера идут не по порядку, а как им угодно + номера могут повторяться). Но если какой-то номер пропущен, то столбец неправильный. Могу ли я написать логическое выражение, которое проверяло бы это?

Отдельный подвопрос здесь - как определить максимальное значение NN для каждого столбца? (то есть - максимум от подстроки, интерпретированной как число - берутся либо первые два символа, либо второй и третий, если первый - восклицательный знак)

Заранее благодарю

Автор - dum
Дата добавления - 25.04.2013 в 21:19
AlexM Дата: Четверг, 25.04.2013, 21:34 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Вы второй раз задаете вопрос без файла. Прочтите рекомендации в правилах формума как сделать пример.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеВы второй раз задаете вопрос без файла. Прочтите рекомендации в правилах формума как сделать пример.

Автор - AlexM
Дата добавления - 25.04.2013 в 21:34
dum Дата: Четверг, 25.04.2013, 21:47 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Извините, вот.
К сообщению приложен файл: Book4.xls (14.0 Kb)
 
Ответить
СообщениеИзвините, вот.

Автор - dum
Дата добавления - 25.04.2013 в 21:47
AlexM Дата: Четверг, 25.04.2013, 22:10 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (dum)
Отдельный подвопрос здесь - как определить максимальное значение NN для каждого столбца

Для столбца А. Формула массива завершить ввод нажатием Ctrl+Shift+Enter
Код
=МАКС(ЕСЛИ(A$1:A$25="";0;--ЛЕВСИМВ(ПОДСТАВИТЬ(A$1:A$25;"!";"");2)))


Если я правильно понял, то корректность столбеца В должна быть НЕТ



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Четверг, 25.04.2013, 22:17
 
Ответить
Сообщение
Цитата (dum)
Отдельный подвопрос здесь - как определить максимальное значение NN для каждого столбца

Для столбца А. Формула массива завершить ввод нажатием Ctrl+Shift+Enter
Код
=МАКС(ЕСЛИ(A$1:A$25="";0;--ЛЕВСИМВ(ПОДСТАВИТЬ(A$1:A$25;"!";"");2)))


Если я правильно понял, то корректность столбеца В должна быть НЕТ

Автор - AlexM
Дата добавления - 25.04.2013 в 22:10
dum Дата: Пятница, 26.04.2013, 01:08 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Да, извините, ошибся. Поправил файл, чтобы отразить то, что нужно. А как же мне быть всё-таки с проверкой на корректность?
К сообщению приложен файл: 2527398.xls (14.0 Kb)
 
Ответить
СообщениеДа, извините, ошибся. Поправил файл, чтобы отразить то, что нужно. А как же мне быть всё-таки с проверкой на корректность?

Автор - dum
Дата добавления - 26.04.2013 в 01:08
AlexM Дата: Пятница, 26.04.2013, 10:32 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (dum)
А как же мне быть всё-таки с проверкой на корректность?

Функцией пользователя получилось.
К сообщению приложен файл: 2527398_new.xls (25.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (dum)
А как же мне быть всё-таки с проверкой на корректность?

Функцией пользователя получилось.

Автор - AlexM
Дата добавления - 26.04.2013 в 10:32
_Boroda_ Дата: Пятница, 26.04.2013, 13:12 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Еще вариант формулы для макс. значения
Код
=МАКС(--ЛЕВСИМВ(ПОДСТАВИТЬ(0&C$1:C$25;"!";);3))


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант формулы для макс. значения
Код
=МАКС(--ЛЕВСИМВ(ПОДСТАВИТЬ(0&C$1:C$25;"!";);3))

Автор - _Boroda_
Дата добавления - 26.04.2013 в 13:12
ShAM Дата: Суббота, 27.04.2013, 06:06 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Цитата (AlexM)
Функцией пользователя получилось.

Функциями Эксель.
К сообщению приложен файл: 0013965.xls (25.0 Kb)
 
Ответить
Сообщение
Цитата (AlexM)
Функцией пользователя получилось.

Функциями Эксель.

Автор - ShAM
Дата добавления - 27.04.2013 в 06:06
dum Дата: Суббота, 27.04.2013, 16:02 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

AlexM, _Boroda_, спасибо.

ShAM, ого! Спасибо, очень элегантно. По правде, я пока не разобрался, как работает корректность (если поясните, буду признателен), но я скопировал в свой документ - всё фунциклирует. Благодарю.
 
Ответить
СообщениеAlexM, _Boroda_, спасибо.

ShAM, ого! Спасибо, очень элегантно. По правде, я пока не разобрался, как работает корректность (если поясните, буду признателен), но я скопировал в свой документ - всё фунциклирует. Благодарю.

Автор - dum
Дата добавления - 27.04.2013 в 16:02
ShAM Дата: Суббота, 27.04.2013, 17:18 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
ПСТР(ПОДСТАВИТЬ(A1:A25;"!";);1;2) - с помощью ПОДСТАВИЬ убираем "!" (если есть), ПСТР(…;1;2) - берет первые 2 символа из ячеек.
Для первого столбца получим массив {1;"";"";"";"";"";"";"";"";2;"";"";"";4;"";"";"";"";3;"";"";"";"";"";""}
ДВССЫЛ("1:"&A26) - даст ссылку на строки с 1-ой до "максимальной", для 1-го столбца (1:4)
СТРОКА(1:4) - в формулах массива формирует массив чисел {1;2;3;4}
ПОИСКПОЗ - ищем позицию числа из массива {1;2;3;4} в массиве {1;"";"";"";"";"";"";"";"";2;"";"";"";4;"";"";"";"";3;"";"";"";"";"";""}
Получим {1;10;19;14}. А, например, для 3 столбца - {5;#Н/Д;9;14;#Н/Д;11}, это означает, что в 3 стлб. Нет 2 и 5 (их позиция не определена).
Теперь нужно отловить эту ошибку (#Н/Д). Я использовал СУММ. Можно другую функцию, например, МАКС, МИН.
ЕНД - дает ИСТИНА если результат предыдущих вычислений #Н/Д (т.е.какое-то число отсутствует) и ЛОЖЬ если нет (т.е. все числа есть).
А нам нужно наоборот, поэтому используем НЕ()
ЗЫ: Для будущего: используйте диалоговое окно "Вычислить формулу". В 2010 Экселе на вкладке "Формулы".
В 2003-м не помню где. Можете нажать F1 и там запрос сделать "Пошаговое вычисление формул".
Можно разобраться в достаточно сложных формулах.
Удачи!
 
Ответить
СообщениеПСТР(ПОДСТАВИТЬ(A1:A25;"!";);1;2) - с помощью ПОДСТАВИЬ убираем "!" (если есть), ПСТР(…;1;2) - берет первые 2 символа из ячеек.
Для первого столбца получим массив {1;"";"";"";"";"";"";"";"";2;"";"";"";4;"";"";"";"";3;"";"";"";"";"";""}
ДВССЫЛ("1:"&A26) - даст ссылку на строки с 1-ой до "максимальной", для 1-го столбца (1:4)
СТРОКА(1:4) - в формулах массива формирует массив чисел {1;2;3;4}
ПОИСКПОЗ - ищем позицию числа из массива {1;2;3;4} в массиве {1;"";"";"";"";"";"";"";"";2;"";"";"";4;"";"";"";"";3;"";"";"";"";"";""}
Получим {1;10;19;14}. А, например, для 3 столбца - {5;#Н/Д;9;14;#Н/Д;11}, это означает, что в 3 стлб. Нет 2 и 5 (их позиция не определена).
Теперь нужно отловить эту ошибку (#Н/Д). Я использовал СУММ. Можно другую функцию, например, МАКС, МИН.
ЕНД - дает ИСТИНА если результат предыдущих вычислений #Н/Д (т.е.какое-то число отсутствует) и ЛОЖЬ если нет (т.е. все числа есть).
А нам нужно наоборот, поэтому используем НЕ()
ЗЫ: Для будущего: используйте диалоговое окно "Вычислить формулу". В 2010 Экселе на вкладке "Формулы".
В 2003-м не помню где. Можете нажать F1 и там запрос сделать "Пошаговое вычисление формул".
Можно разобраться в достаточно сложных формулах.
Удачи!

Автор - ShAM
Дата добавления - 27.04.2013 в 17:18
ikki Дата: Суббота, 27.04.2013, 17:23 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (ShAM)
В 2003-м не помню где.

меню Сервис - Зависимости формул - Вычислить формулу.



или вытащить кнопку на панель (настройка панели, вкладка Команды, категория Сервис, почти в самом конце списка)
К сообщению приложен файл: 3974373.gif (32.8 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (ShAM)
В 2003-м не помню где.

меню Сервис - Зависимости формул - Вычислить формулу.



или вытащить кнопку на панель (настройка панели, вкладка Команды, категория Сервис, почти в самом конце списка)

Автор - ikki
Дата добавления - 27.04.2013 в 17:23
ShAM Дата: Суббота, 27.04.2013, 17:45 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Спасибо, Александр.
 
Ответить
СообщениеСпасибо, Александр.

Автор - ShAM
Дата добавления - 27.04.2013 в 17:45
dum Дата: Суббота, 27.04.2013, 18:42 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

ShAM, спасибо за разъяснение.

Цитата
Теперь нужно отловить эту ошибку (#Н/Д). Я использовал СУММ. Можно другую функцию, например, МАКС, МИН.


Вот это вот был самый неясный для меня момент. Теперь понятно. Благодарю.
 
Ответить
СообщениеShAM, спасибо за разъяснение.

Цитата
Теперь нужно отловить эту ошибку (#Н/Д). Я использовал СУММ. Можно другую функцию, например, МАКС, МИН.


Вот это вот был самый неясный для меня момент. Теперь понятно. Благодарю.

Автор - dum
Дата добавления - 27.04.2013 в 18:42
AlexM Дата: Суббота, 27.04.2013, 23:48 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Функция пользователя из сообщения №6 определяет минимальное значение NN, поэтому в значениях NN не обязательно начинается с 01. Т.е. функция определит корректность ИСТИНА, если последовательность 03, 05, 04, 06.
Если формула должна работать также, то нужно определить минимум без учета нуля формулой массива в А27
Код
=МИН(ЕСЛИ(A1:A25<>0;--ПСТР(ПОДСТАВИТЬ("0"&A1:A25;"!";);1;3)))

А в формуле корректности функцию ДВССЫЛ() дополнить
Код
ДВССЫЛ(A27&":"&A26)

вся формула с дополнением
Код
=НЕ(ЕНД(СУММ(ПОИСКПОЗ(СТРОКА(ДВССЫЛ(A27&":"&A26));--ПСТР(ПОДСТАВИТЬ(A1:A25;"!";);1;2);))))



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеФункция пользователя из сообщения №6 определяет минимальное значение NN, поэтому в значениях NN не обязательно начинается с 01. Т.е. функция определит корректность ИСТИНА, если последовательность 03, 05, 04, 06.
Если формула должна работать также, то нужно определить минимум без учета нуля формулой массива в А27
Код
=МИН(ЕСЛИ(A1:A25<>0;--ПСТР(ПОДСТАВИТЬ("0"&A1:A25;"!";);1;3)))

А в формуле корректности функцию ДВССЫЛ() дополнить
Код
ДВССЫЛ(A27&":"&A26)

вся формула с дополнением
Код
=НЕ(ЕНД(СУММ(ПОИСКПОЗ(СТРОКА(ДВССЫЛ(A27&":"&A26));--ПСТР(ПОДСТАВИТЬ(A1:A25;"!";);1;2);))))

Автор - AlexM
Дата добавления - 27.04.2013 в 23:48
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!