Помогите через формат ячейки (в ячейках C3:C21) сделать что-бы последние цифры писались через пробел (1999 12 или 1999 1). Для формулы важен пробел. А то работники пишут либо с двумя пробелами (1999 12) либо с запятой (1999,12 или 1999, 12).
Помогите через формат ячейки (в ячейках C3:C21) сделать что-бы последние цифры писались через пробел (1999 12 или 1999 1). Для формулы важен пробел. А то работники пишут либо с двумя пробелами (1999 12) либо с запятой (1999,12 или 1999, 12).DrMini
Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True 'Нужны все совпадения .IgnoreCase = True 'Регистр неважен .Pattern = "(\d+)" 'Регулярка Space = str1 If .test(str2) Then Set arrStr = .Execute(str2) If arrStr.Count = 2 Then Space = Left(str1, InStr(str1, arrStr(0).Value) - 1) & arrStr(0).Value & " " & arrStr(1).Value Else If Not (Len(arrStr(0)) = 6 Or Len(arrStr(0)) = 5) Then MsgBox "Длина числа не соответствует формату", 48, "Неправильный формат числа" Space = Left(str1, InStr(str1, arrStr(0).Value) - 1) & Left(arrStr(0).Value, 4) & " " & Right(arrStr(0).Value, Len(arrStr(0).Value) - 4) End If End If
End With
End Function
[/vba]
Можно макросом, реагирует на событие листа. [vba]
Код
Public Function Space(str1 As String) As String Dim regEx As Object, arrStr Dim str2 As String
Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True 'Нужны все совпадения .IgnoreCase = True 'Регистр неважен .Pattern = "(\d+)" 'Регулярка Space = str1 If .test(str2) Then Set arrStr = .Execute(str2) If arrStr.Count = 2 Then Space = Left(str1, InStr(str1, arrStr(0).Value) - 1) & arrStr(0).Value & " " & arrStr(1).Value Else If Not (Len(arrStr(0)) = 6 Or Len(arrStr(0)) = 5) Then MsgBox "Длина числа не соответствует формату", 48, "Неправильный формат числа" Space = Left(str1, InStr(str1, arrStr(0).Value) - 1) & Left(arrStr(0).Value, 4) & " " & Right(arrStr(0).Value, Len(arrStr(0).Value) - 4) End If End If
А то работники пишут либо с двумя пробелами ... либо с запятой (
А если они вместо запятой еще что-то напишут? Точку, например. Или 5 пробелов зафигачат? В файле приведены примеры, когда ни одна из вышеприведенных формул не работает верно.
Предлагаю искать последние 4 цифры подряд и по ним уже ловить коэффициент.
А то работники пишут либо с двумя пробелами ... либо с запятой (
А если они вместо запятой еще что-то напишут? Точку, например. Или 5 пробелов зафигачат? В файле приведены примеры, когда ни одна из вышеприведенных формул не работает верно.
Предлагаю искать последние 4 цифры подряд и по ним уже ловить коэффициент.
Udik, В ячейке C3 вводится текст с названием книги и в конце ставится год выпуска книги и через пробел либо однозначное либо двухзначное число (какая то фигня связанная с каталогизаторами библиотек). А в ячейке L3 должен подставляться из таблицы коэффициент уценки книг [Примерно вот в таком формате: "Название книги, 1999 22" или "Название книги, 1999 1"]. А библиотекари при наборе бывает путают и вводят вот в таком формате ["Название книги, 1999, 22" "Название книги, 1999 22"] и формула (которая была в самом начале поста предложенная _Boroda_, работала некорректно.). Вроде понятно объяснил. А если использовать макрос, то может в него и "вложить" коэффициенты уценки привязанные к годам выпуска книг и отказаться от таблицы. Повторюсь, если я в формулах кое, как понимаю, то в VBA вааще полный НОЛЬ.
Udik, В ячейке C3 вводится текст с названием книги и в конце ставится год выпуска книги и через пробел либо однозначное либо двухзначное число (какая то фигня связанная с каталогизаторами библиотек). А в ячейке L3 должен подставляться из таблицы коэффициент уценки книг [Примерно вот в таком формате: "Название книги, 1999 22" или "Название книги, 1999 1"]. А библиотекари при наборе бывает путают и вводят вот в таком формате ["Название книги, 1999, 22" "Название книги, 1999 22"] и формула (которая была в самом начале поста предложенная _Boroda_, работала некорректно.). Вроде понятно объяснил. А если использовать макрос, то может в него и "вложить" коэффициенты уценки привязанные к годам выпуска книг и отказаться от таблицы. Повторюсь, если я в формулах кое, как понимаю, то в VBA вааще полный НОЛЬ.DrMini
Так Вы сначала объясните что не так в ячейке С3 выводится, я понять не могу. С формулами потом разбираться будем, если модераторы не погонят в новую тему
Так Вы сначала объясните что не так в ячейке С3 выводится, я понять не могу. С формулами потом разбираться будем, если модераторы не погонят в новую тему Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Так Вы сначала объясните что не так в ячейке С3 выводится
В ячейке C3 всё нормально выводится (запятые удаляются и пробелы лишние тоже). Только при вводе в ячейку C3 одной цифры после года, в ячейке L3 формула работает неправильно. Я же приложил файл и написал, как должно быть. Например в ячейке C3 вводим "текст потом 2000 55" и получаем в ячейке L3 коэффициент соответствующий ячейке T14. Но только изменим значение ячейки C3 на "текст потом 2000 5" (удалим одну цифру в конце) и в ячейке L3 значение станет неверным.
Так Вы сначала объясните что не так в ячейке С3 выводится
В ячейке C3 всё нормально выводится (запятые удаляются и пробелы лишние тоже). Только при вводе в ячейку C3 одной цифры после года, в ячейке L3 формула работает неправильно. Я же приложил файл и написал, как должно быть. Например в ячейке C3 вводим "текст потом 2000 55" и получаем в ячейке L3 коэффициент соответствующий ячейке T14. Но только изменим значение ячейки C3 на "текст потом 2000 5" (удалим одну цифру в конце) и в ячейке L3 значение станет неверным.DrMini