powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Маска для ячейки Excel ?
16 сообщений из 16, страница 1 из 1
Маска для ячейки Excel ?
    #34921204
Юрец_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, Люди!!!
Подскажите каким образом можно организовать ввод данных в ячейку только в виде "хх xx" - т.е. две пары чисел, разделенные пробелом (серия паспорта например).
В Access эта проблема решается путем установления для требуемого поля маски в виде "00\ 00;0;_", а можно ли тоже самое приспособить для ячейки Excel?
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921209
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте через Данные — Проверка.
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921333
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Если только визуально нужно разделить по 2 цифры а вводить четырёхзначное целое число, то
- формат ячейки - ВСЕ ФОРМАТЫ - ставим "00\ 00" (без кавычек)
- а в проверке данных ставим - целое число между 0001 и 9999

2)Если же нужен именно текст в ячейке который будет содержать 2 цифрф, потом пробел, потом опять 2 цифры, то
- данные - проверка - что-то вроде этого
Код: plaintext
=ЕЧИСЛО(--ПСТР(B27; 2 ; 1 ))*(ПСТР(B27; 3 ; 1 )=" ")*ЕЧИСЛО(--ПСТР(B27; 4 ; 1 ))*ЕЧИСЛО(--ПСТР(B27; 5 ; 1 ))
Это не самая оптимальная формула, а просто пример, мне кажется что всё же первый случай у вас
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921422
*Artemka!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть так : "Формат ячейки - Число - Дополнительный - Табельный номер" вот тока пробел самому надо будет ставить
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921433
*Artemka!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
че-то я тупанул.... =)))
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921447
Юрец_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad1)Если только визуально нужно разделить по 2 цифры а вводить четырёхзначное целое число, то
- формат ячейки - ВСЕ ФОРМАТЫ - ставим "00\ 00" (без кавычек)
- а в проверке данных ставим - целое число между 0001 и 9999

2)Если же нужен именно текст в ячейке который будет содержать 2 цифрф, потом пробел, потом опять 2 цифры, то
- данные - проверка - что-то вроде этого
Код: plaintext
=ЕЧИСЛО(--ПСТР(B27; 2 ; 1 ))*(ПСТР(B27; 3 ; 1 )=" ")*ЕЧИСЛО(--ПСТР(B27; 4 ; 1 ))*ЕЧИСЛО(--ПСТР(B27; 5 ; 1 ))
Это не самая оптимальная формула, а просто пример, мне кажется что всё же первый случай у вас
В принципе работают оба варианта, но хотелось бы, чтобы при попадании в ячейку пользователю было ясно, что ввести можно только 2 пары цифр и ничего более. В Access при установленной для поля маски "00\ 00;0;_" , при попадании курсора в это поле высвечиваются символы "__ __" и ничего другого кроме как 2-х пар цифр в это поле ввести не получится. Есть ли такое в Excel? (ведь и там и там вроде VBA)?
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921535
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ввод данных?
Опыт показывает что, "данные - проверка" помогает, но не всегда.
Я хочу сказать что при капирование "данные - проверка" не помогает, т.е. если user в один прекрасный момент скопирует откуда-нибудь данные, то все пойдет крахом.
Лучше всего ввод осуществлять с userform или inputbox с соответствующими проверками, а лист при этом запаролить.
Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    vvod1 Target
    Cancel = True
End Sub

Private Sub vvod1(mTarget As Range)
    Dim tmp As String
 10   tmp = InputBox("Ведите данные в формате ""00 00""", "Ввод")
    If tmp = "" Then Exit Sub
    If Len(tmp) <>  5  Then MsgBox "", vbCritical: GoTo  10 
    If Not IsNumeric(Mid(tmp,  1 ,  2 )) Then MsgBox "", vbCritical: GoTo  10 
    If Not IsNumeric(Mid(tmp,  3 ,  2 )) Then MsgBox "", vbCritical: GoTo  10 
    If Mid(tmp,  3 ,  1 ) <> " " Then MsgBox "", vbCritical: GoTo  10 
    mTarget.Worksheet.Unprotect
    mTarget = tmp
    mTarget.Worksheet.Protect
End Sub
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921538
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921690
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorВвод данных?
Опыт показывает что, "данные - проверка" помогает, но не всегда.
Я хочу сказать что при капирование "данные - проверка" не помогает, т.е. если user в один прекрасный момент скопирует откуда-нибудь данные, то все пойдет крахом.
Лучше всего ввод осуществлять с userform или inputbox с соответствующими проверками, а лист при этом запаролить.
Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    vvod1 Target
    Cancel = True
End Sub

Private Sub vvod1(mTarget As Range)
    Dim tmp As String
 10   tmp = InputBox("Ведите данные в формате ""00 00""", "Ввод")
    If tmp = "" Then Exit Sub
    If Len(tmp) <>  5  Then MsgBox "", vbCritical: GoTo  10 
    If Not IsNumeric(Mid(tmp,  1 ,  2 )) Then MsgBox "", vbCritical: GoTo  10 
    If Not IsNumeric(Mid(tmp,  3 ,  2 )) Then MsgBox "", vbCritical: GoTo  10 
    If Mid(tmp,  3 ,  1 ) <> " " Then MsgBox "", vbCritical: GoTo  10 
    mTarget.Worksheet.Unprotect
    mTarget = tmp
    mTarget.Worksheet.Protect
End Sub


Я не случайно проверял каждый символ в свём примере, т.к. если проверять пару, то проходит такой вариант "1, 1,"
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921908
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрец_1
В принципе работают оба варианта, но хотелось бы, чтобы при попадании в ячейку пользователю было ясно, что ввести можно только 2 пары цифр и ничего более. В Access при установленной для поля маски "00\ 00;0;_" , при попадании курсора в это поле высвечиваются символы "__ __" и ничего другого кроме как 2-х пар цифр в это поле ввести не получится. Есть ли такое в Excel? (ведь и там и там вроде VBA)?

Вариант:

Формат ячейки - ;;"__ __"
Проверка - =ИЛИ(И(ЕЧИСЛО(--ПСТР(B27;1;1));ЕЧИСЛО(--ПСТР(B27;2;1));ПСТР(B27;3;1)=" ";ЕЧИСЛО(--ПСТР(B27;4;1));ЕЧИСЛО(--ПСТР(B27;5;1));ПСТР(B27;6;1)="");B27=0)
При введённом нуле отображается "__ __"
Номер вводится с пробелом
На VBA хочешь сам переложи логику.
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34921985
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
Я не случайно проверял каждый символ в свём примере, т.к. если проверять пару, то проходит такой вариант "1, 1,"
Ok.
Я видел этот подход и в других твоих постах.
Вообщем-то я хотел показать направление.
Думаю что приведённый мной код, далеко не идеал.
Можно много разных проверок сделать, можно и RegExp использовать или like
Код: plaintext
1.
2.
3.
4.
5.
 10   tmp = InputBox("Ведите данные в формате ""00 00""", "Ввод", tmp)
    If tmp = "" Then Exit Sub
    If Not tmp Like "?? ??" Then MsgBox "": GoTo  10 
    mTarget.Worksheet.Unprotect
    mTarget = tmp
    mTarget.Worksheet.Protect
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34922010
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor
Вообщем-то я хотел показать направление.

согласен, я тоже просто указал направление и указал на разницу, чтобы не упутить из виду.
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34922240
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще-то, вряд ли Excel нуждается в таких "улучшениях".
Нужно просто в каждом средстве использовать его технологии работы.
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34922686
Artemka!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FА вообще-то, вряд ли Excel нуждается в таких "улучшениях".
Нужно просто в каждом средстве использовать его технологии работы.

=) А если так : "##_-##_-######" без ковычек вбить в верхнюю строку(Тип) Формат ячейки - Все форматы - Тип =))) для паспорта сойдет =))
...
Рейтинг: 0 / 0
Маска для ячейки Excel ?
    #34922713
Artemka!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Artemka! FА вообще-то, вряд ли Excel нуждается в таких "улучшениях".
Нужно просто в каждом средстве использовать его технологии работы.

=) А если так : "##_-##_-######" без ковычек вбить в верхнюю строку(Тип) Формат ячейки - Все форматы - Тип =))) для паспорта сойдет =))

хе, посмотрел что там наверху навыдумывали, аж смешно становиться... вариант подходит только для формата 22 33 456789 для других я думаю вариация будет похожая =))) Обозначение пробела придумал такое "_-" перебрал все что мог, но наверное бывают варианты и лучше =))) но и этот вполне подходит=)))))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Маска для ячейки Excel ?
    #39921416
ao2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad
1)...
2)Если же нужен именно текст в ячейке который будет содержать 2 цифры, потом пробел, потом опять 2 цифры, то
- данные - проверка - что-то вроде этого
Код: vbnet
1.
=ЕЧИСЛО(--ПСТР(B27;2;1))*(ПСТР(B27;3;1)=" ")*ЕЧИСЛО(--ПСТР(B27;4;1))*ЕЧИСЛО(--ПСТР(B27;5;1))


Это не самая оптимальная формула...

Простите, я хочу знать, а что означают два знака минус "--" перед ПСТР?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Маска для ячейки Excel ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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