Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2013, 10:19   #1
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию замена текста

Здравствуйте! Подскажите, пожалуйста, как можно в выделенном столбце в каждой ячейке перед текстом подставить пробел?
например:
сельское хозяйство
промышленность
рыболовство и т.д.
надо:
сельское хозяйство
промышленность
рыболовство

Последний раз редактировалось evdss; 14.01.2013 в 10:33.
evdss вне форума Ответить с цитированием
Старый 14.01.2013, 10:40   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Разници не заметил. Но если по описанию:
-в любом пустом столбце пишите формулу: =" "&A1
-в столбце А непосредственно текст, к которому пробел надо добавить;
-заменяете формулы на значения в столбце с новой формулой;
-теперь можете заменить этим столбцом исходные данные.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 14.01.2013, 10:47   #3
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

Пробелы в тексте не видны. Сейчас делаю формулой, но очень неудобно, так как этих таблиц много и надо во всех править. так конечно может кто поможет макросом
evdss вне форума Ответить с цитированием
Старый 14.01.2013, 10:55   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Sub AddSpace()
  For I = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    Range("A" & I) = " " & Range("A" & I)
  Next I
End Sub
можно так попробовать сделать) работает только с активным листом
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.01.2013, 11:08   #5
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

спасибо большое, все работает
evdss вне форума Ответить с цитированием
Старый 14.01.2013, 13:28   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код работает с выделенными столбцами.

Чтобы выбрать столбцы, в которых нужно обработать данные, достаточно выделить только одну ячейку, находящуюся в нужном столбце.
Обрабатываются все ячейки в выбранных столбцах, кроме пустых ячеек.

Код:
Sub Procedure_2()

    Dim myColumns As Excel.Range
    Dim myFind As Excel.Range, myAddress As String
    
    '1. Даём имя "myColumns" выделенным столбцам.
    'Через это имя будем обращаться к ячейкам выделенных столбцов.
    'Чтобы не обрабатывать все ячейки в столбцах (чтобы было быстрее),
        'берём только используемые части столбцов.
    Set myColumns = Application.Intersect(Selection.EntireColumn, ActiveSheet.UsedRange)
    
    '2. Обрабатываем ячейки в выделенных столбцах.
    '2.1. В столбцах могут быть и пустые ячейки.
        'Чтобы пропустить пустые ячейки, буду использовать команду "Find".
        'С помощью команды "Find" будут искаться ячейки,
        'которые содержат хотя бы один любой символ.
    'У команды "Find" надо указывать все параметры, т.к.
        'команда "Find" связана с окном "Найти и заменить" и
        'параметры окна "Найти и заменить" могут повлиять на результаты
        'поиска с помощью команды "Find".
    'What:="?" - знак вопроса в данном случае - это специальный символ.
    Set myFind = myColumns.Find(What:="?", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    
    'Если есть результат поиска.
    If Not myFind Is Nothing Then
    
        '2.2. Запоминаем адрес первой найденной ячейки,
            'чтобы потом остановить цикл.
        myAddress = myFind.Address
        
        Do
            '2.3. Добавляем пробел в ячейку.
            'Переменная "myFind" представляет собой ячейку,
                'где было что-то найдено.
            myFind.Value = " " & myFind.Value
            
            '2.4. Продолжаем поиск.
            Set myFind = myColumns.FindNext(myFind)
            
        Loop While myFind.Address <> myAddress
        
    End If
    
End Sub

Примечание
  1. Команда Find не всегда работает, если на листе есть объединённые ячейки. Поэтому, если есть объединённые ячейки, то вместо команды Find нужно использовать что-нибудь другое.
  2. Чтобы код работал быстрее, можно отключить с помощью самого кода на время работы кода:
    1. обновление монитора;
    2. обработку событий;
    3. пересчёт формул.

Последний раз редактировалось Скрипт; 14.01.2013 в 14:20.
Скрипт вне форума Ответить с цитированием
Старый 15.01.2013, 10:23   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Alt+F11
Ctrl+G
[a1:a3]=[" " & A1:A3]
Enter
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена текста vtmz Microsoft Office Excel 3 13.09.2012 20:22
Замена текста Lived08 Microsoft Office Excel 11 28.07.2010 14:20
замена текста в Edit designer999 Общие вопросы Delphi 3 17.04.2010 15:19
замена текста designer999 Общие вопросы Delphi 5 23.03.2010 17:31
замена текста zetrix Microsoft Office Excel 0 31.10.2006 07:54