Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 29.06.2008
Сообщений: 15

Разделить текст в конкретном месте пробелами

14.06.2013, 11:18. Показов 2172. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем гуру программирования, сразу скажу поиском пользовался, гуглил и мат.часть читал, но к сожалению безуспешно. По этому решил написать сюда. Так вот у меня следующая проблема есть база данных в котором есть поле, в нем много много строк в каждой строке запись с одинаковым кол-вом символов 10 (без учета пробелов) выглядит текст так: ЧЕЛ 01976 БЭ или ХАБ 01366 БЭ и тд, то есть всегда 3 буквы потом пробел 5 цифр снова пробел и 2 буквы, но где то 40% из них не разделены пробелами (ЧЕЛ01334БР) так вот нужно чтобы скрипт проверял каждую запись и определял есть ли пробел между 3 и 4, 8 и 9 символом или его нету и если его нету он его ставил. Записей больше 3000 так что вручную это сами понимаете, надеюсь на вашу помощь... Заранее вам спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.06.2013, 11:18
Ответы с готовыми решениями:

В Worde выровнять текст по ширине пробелами
Доброго времени суток господа. Очень нужна квалифицированная помощь программиста VBA. Необходимо в Worde выровнять текст по ширине...

Разделить заданный текст на строки, содержащие не более 20 символов. Перенос осуществляется на месте пробе
Разделить заданный текст на строки, содержащие не более 20 символов. Перенос осуществляется на месте пробела. Добавить равномерно пробелы,...

Проверка и запись данных в файл в конкретном месте
Вопрос таков. есть файл 123.conf ++++++++++ MaxUsers= users= ++++++++++ users= вторая строка

8
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,933
Записей в блоге: 4
14.06.2013, 12:48
примерная функция

Code
1
2
3
4
5
6
7
Sub mm130614_1249()
Dim s1
s1 = Replace("ЧЕ Л0133 4Б Р", " ", "")
Debug.Print Format(s1, "@@@ @@@@@ @@")
 
 
End Sub
2
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
14.06.2013, 13:31
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub bb()
Dim strTemp As String, StrZnak  As String, strNew As String, i%, k%, u%
strTemp = Trim$("ЧЕЛ01976 БЭ")
k = Len(strTemp)
For i = k To 1 Step -1
    StrZnak = Mid$(strTemp, i, 1)
    If i = k - 2 And StrZnak <> " " Then StrZnak = StrZnak & " ": u = 1
    If i = k - 8 + u And StrZnak <> " " Then StrZnak = StrZnak & " "
    strNew = StrZnak & strNew
Next
MsgBox strNew
End Sub
2
0 / 0 / 0
Регистрация: 29.06.2008
Сообщений: 15
14.06.2013, 14:47  [ТС]
Цитата Сообщение от KoGG Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub bb()
Dim strTemp As String, StrZnak  As String, strNew As String, i%, k%, u%
strTemp = Trim$("ЧЕЛ01976 БЭ")
k = Len(strTemp)
For i = k To 1 Step -1
    StrZnak = Mid$(strTemp, i, 1)
    If i = k - 2 And StrZnak <> " " Then StrZnak = StrZnak & " ": u = 1
    If i = k - 8 + u And StrZnak <> " " Then StrZnak = StrZnak & " "
    strNew = StrZnak & strNew
Next
MsgBox strNew
End Sub
Выглядит грамотно но у меня все строки становятся ЧЕЛ 01976 БЭ, почему вы в функции возвращении строки без пробелов (trim) вписываете именно конкретную строку? Можно же как то сделать чтобы он выбирал текущую строку?? Я не очень в этом разбираюсь но в программе в которой я работаю arcmap 9.3 при вычислении он по порядку каждую строку вычисляет есть ли какая то функция обозначающая текущую строку? Это наверное бы исправило ситуацию
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
14.06.2013, 15:26
Я написал ответ на суть вопроса.
Перебор строк - за рамками данной темы. По Access и arcmap 9.3 я Вам не помогу.

Добавлено через 9 минут
Если в данных нет концевых пробелов, то Trim использовать не надо.
1
0 / 0 / 0
Регистрация: 29.06.2008
Сообщений: 15
14.06.2013, 16:40  [ТС]
Да вы правы спасибо, думаю если подставить туда название поля то должно получится. Еще раз спасибо
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
14.06.2013, 18:05
Если разрешите... Была у меня подобная проблема (только Excel). В Google забил в поиск "vba insert some character in string". Он мне в момент, гад такой, столько результатов выдал - я растерялся. Попробуйте добавить в мою фразу поиска еще Access. Вдруг найдете все уже готовое. А я взял первое что попало и немного переделал для себя. В результате, в массиве mARR указываю, какие группы меня интересуют (в Вашем случае - mARR=Array(3,5), а в последней группе (ее не указываю, что получится) - весь остаток, вот его надо, если нужно, надо проверять на длинну). Здесь этого нет, но мне еще нужно было не просто пробел, а разные символы в разных местах строки. Чуть это подправить - и вставляйте что и куда хотите в разных комбинациях. Может пригодится.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function InsertSomeCHR(strInput As String, strCHR As String, arr)
   Dim strTemp$, lngIndex&, counter&
      strInput = Replace(Application.Trim(strInput), " ", "")
     counter = 0
       For lngIndex = 1 To Len(strInput)
         strTemp = IIf(lngIndex = 1, Mid$(strInput, lngIndex, arr(counter)), _
                                 strTemp & strCHR & Mid$(strInput, lngIndex, arr(counter)))
         lngIndex = lngIndex + CLng(arr(counter)) - 1: counter = counter + 1
            If counter > UBound(arr) Then
               strTemp = strTemp & strCHR & Mid$(strInput, lngIndex + 1): Exit For
            End If
     Next 'lngIndex
    InsertSomeCHR = strTemp
End Function
 '@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
Sub test()
   Dim marr(), mstr$, myCHAR$
   marr = Array(3, 5, 3, 8, 3, 3, 2): myCHAR = " " ' только для Вас - указан пробел.
   mstr = "MQGSVTEFLKPRLVDIEQVSSTHAKVTLEPLERGFGHTLG"
    Debug.Print InsertSomeCHR(mstr, myCHAR, marr)
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
14.06.2013, 21:59
Так где эта база?
Если это столбец в Экселе - я бы делал в 3 приёма:
1. убить заменой все пробелы столбца
2. текст по столбцам
3. собрать снова назад, воткнув пробелы простой формулой.

А впрочем, можно это сразу сделать одной UDF - убить, собрать.

Добавлено через 4 минуты
Visual Basic
1
2
3
4
Function sobr(s$)
    s = Replace(s, " ", "")
    sobr = Left(s, 3) & " " & Mid(s, 3, 5) & " " & Right(s, 3)
End Function
Хотя это уже реализовано в первом ответе
0
0 / 0 / 0
Регистрация: 29.06.2008
Сообщений: 15
24.06.2013, 11:20  [ТС]
Народ спасибо всем. Особенности KoGG,y .Все работает на ура подставил после trim название поля и все идеально работает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2013, 11:20
Помогаю со студенческими работами здесь

Считывание цвета пикселя конкретного окна в конкретном месте
Добрый день. Помогите пожалуйста. Какбы нужно в конкретном окне программы при нажатии кнопкой мыши считать цвет и каординаты положения...

Набор текст в одном месте, аналогичный тест появлялся бы в другом месте. Word 2016
Нужно чтобы при наборе текста в одном месте аналогичный тест появлялся бы в другом месте в ворде 2016. Есть договор в нем на разных...

Разделить числа пробелами
Есть textbox , строки в котором состоят из чисел с двумя знаками после запятой. 4010,00461775,43 34069,802946281,21 ...

Разделить большое число пробелами
Здравствуйте! Подскажите пожалуйста, как разделить число пробелами (или любыми другими символами), например число 15564355 -&gt; 15...

Разделить в строке все буквы пробелами
Вводим слова и программа должна разделить в строке все буквы пробелами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru