|
|
|
| подскажите способ получения в соседнем поле числа вместо текста т.е. удалить три последних символа в строке, надо удалить " мм" в поле длина. Иначе и не сложить и не посчитать. | |
|
| |
|
|
|
| наверное, проще использовать функции Val(), CLng(), CInt() | |
|
| |
|
|
|
| Тут посмотрел и понял, что необходимо пояснить, что количество символов в строках разное и не везде есть " мм" есть и просто число, может есть способ удаления всех символов после пробела и осуществить енто в построителе выражений? | |
|
| |
|
|
|
| нужно попробовать так:
dim My_Str as string '
dim i as long
My_Str = [Строка из поля]
for i=len(My_St) to 1 step -1
if isNumeric mid(My_St,i,1) = true then
exit for
end if
next i
' может надо будет i =i+1
Соседнее_Поле=left( My_Str,i) | |
|
| |
|
|
|
| решение нашлось и весьма простое: правка/найти и заменить. Но если много разных единиц (кг, мм, шт), то будут проблемы | |
|
| |
|
|
|
| зачем работать с шаблоном - ест Ascii код цифр - перебери строку - все что мимо кассы - нафиг - на выходе число.
Function Str_Val(ParamArray Ar())
Str_In=Ar(0)
Str_Out=""
For i = 1 To Len(Str_In)
Select Case Asc(Mid(Str_In, i, 1))
Case 48 To 57
Str_Out = Str_Out & Mid(Str_In, i, 1)
Case 46, 44
If InStr(Str_Out, ".") = 0 Then Str_Out = Str_Out & "."
End Select
Next
Str_Val=Str_Out
End Function
|
| |
|
| |
|
|
|
| Если первые всегда цифры, а " мм" означает миллиметры, то думаю так подойдет.
Если ошибаюсь, то воспользуйтесь функцией Replace()
? Replace("123 мм", " мм", "")
123
|
| |
|
| |
|
|
|
| судя по всему это поле заполняют руками так что ждать нужно всего - точек, зпт, слеши пробелы в кол-ве от 0 до бесконечности и конечно различные варианты написания общепринятых сокращений + просто понравившиеся юзеру символы. | |
|
| |
|
|
|
| вот перебока в коде это наверное то что надо. Попробую сделать. | |
|
| |
|
|
|
|
?Str_Val("123 мм2")
1232
?Val("123 мм2")
123
|
| |
|
| |
|
|
|
| еще бывает "О" вместо -0- и т.п.
ну, в общем про гос.тендеры, гос.закупки и заявки вы все в курсе :))) | |
|
| |
|
|
|
| а если с 1С выкрутили через опу то - 1,203,123,258.85 и нужно писЯть логику обработки, а если еще подправили ручками (от чрезмерного усердия) 1,203123,258,85 | |
|
| |
|
|
|
|
| как грил Поддеревянский: "Подведем итоги"
- чтоб меньше было таких заморочек - юзерам руками вводить давать по меньше, особенно то что будет вычисляться, уж лучше сделать 2 поля кол-во (только цифры ) и ед.изм. и вот там хай извращаются как хотят.
- ед.изм. тоже нужен контроль, иначе можно складывать кг + м. + м.п. + м2 в результате получаем только яблоки | |
|
| |
|
|
|
| Replace дало желаемый результат, а так Котикк прав надо единицу измерения писать в отдельной графе конечно же. просто эти данные я получаю из INVENTORа .Вот как я сделал =CDbl(Replace([Поле2];" мм";" ")), теперь, я полагаю, можно и в сводной табличке результаты посчитать. | |
|
| |