Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разделение данных в столбце на несколько столбцов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделение данных в столбце на несколько столбцов (Макросы/Sub)
Разделение данных в столбце на несколько столбцов
Babarabatin Дата: Вторник, 07.11.2017, 17:23 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток, столкнулся с такой проблемой: есть столбец с данными типа 1, 1а, 221А, 11-13А, 20А/2. Это номера домов, с корпусами, где "-" означает, несколько домов от 11 до 13А, т.е. уникального разделителся для всех ячеек нет. Можно ли разделить данные, так, чтобы текст разделялся следующим образом по столбцам: 1А и 221А на 2 столбца, где в 1ом будет 1, во втором А и 221 А соответственно, а ячейки где стоит знак "-" и "/" оставались без изменений?
К сообщению приложен файл: 4809731.xlsx (13.5 Kb)
 
Ответить
СообщениеДоброго времени суток, столкнулся с такой проблемой: есть столбец с данными типа 1, 1а, 221А, 11-13А, 20А/2. Это номера домов, с корпусами, где "-" означает, несколько домов от 11 до 13А, т.е. уникального разделителся для всех ячеек нет. Можно ли разделить данные, так, чтобы текст разделялся следующим образом по столбцам: 1А и 221А на 2 столбца, где в 1ом будет 1, во втором А и 221 А соответственно, а ячейки где стоит знак "-" и "/" оставались без изменений?

Автор - Babarabatin
Дата добавления - 07.11.2017 в 17:23
sboy Дата: Вторник, 07.11.2017, 17:38 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
запись вида 19А/К1 должна оставаться без изменений?


Яндекс: 410016850021169

Сообщение отредактировал sboy - Вторник, 07.11.2017, 17:42
 
Ответить
СообщениеДобрый день.
запись вида 19А/К1 должна оставаться без изменений?

Автор - sboy
Дата добавления - 07.11.2017 в 17:38
Babarabatin Дата: Среда, 08.11.2017, 08:04 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
запись вида 19А/К1 должна оставаться без изменений?

Да, надо разделить только ячейки с данными типа 56А.


Сообщение отредактировал Babarabatin - Среда, 08.11.2017, 08:04
 
Ответить
Сообщение
Добрый день.
запись вида 19А/К1 должна оставаться без изменений?

Да, надо разделить только ячейки с данными типа 56А.

Автор - Babarabatin
Дата добавления - 08.11.2017 в 08:04
sboy Дата: Среда, 08.11.2017, 10:01 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Вот такой вариант получился
[vba]
Код
Sub qw()
Application.ScreenUpdating = False
On Error Resume Next
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        s = Right(Cells(r, 1).Value, 1)
        d = CInt(s)
            If Err.Number Then
                Cells(r, 2) = s
                Cells(r, 1) = Left(Cells(r, 1), Len(Cells(r, 1).Value) - 1)
                Err.Clear
            End If
    Next r
Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 4809731-1-.xlsm (19.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеВот такой вариант получился
[vba]
Код
Sub qw()
Application.ScreenUpdating = False
On Error Resume Next
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        s = Right(Cells(r, 1).Value, 1)
        d = CInt(s)
            If Err.Number Then
                Cells(r, 2) = s
                Cells(r, 1) = Left(Cells(r, 1), Len(Cells(r, 1).Value) - 1)
                Err.Clear
            End If
    Next r
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - sboy
Дата добавления - 08.11.2017 в 10:01
Babarabatin Дата: Среда, 08.11.2017, 10:38 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вот такой вариант получился

Если в столбце встречается данные типа 141-150А, то он "А" переносит в след. столбец или 111-А, он также переносит "А" в след столбец. Нужен способ не затрагивать ячейки в которых присутствует какой-либо знак препинания или символ не относящийся к буквам и числам.


Сообщение отредактировал Babarabatin - Среда, 08.11.2017, 10:47
 
Ответить
Сообщение
Вот такой вариант получился

Если в столбце встречается данные типа 141-150А, то он "А" переносит в след. столбец или 111-А, он также переносит "А" в след столбец. Нужен способ не затрагивать ячейки в которых присутствует какой-либо знак препинания или символ не относящийся к буквам и числам.

Автор - Babarabatin
Дата добавления - 08.11.2017 в 10:38
китин Дата: Среда, 08.11.2017, 11:09 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
чисто по примеру формула массива
Код
=ЕСЛИ(ЕЧИСЛО(ПОИСК("/";A1));A1;ПСТР(A1;1;ПОИСКПОЗ(1=1;ЕОШ(--ПСТР(A1;СТРОКА($1:$10);1));0)-1))

и
Код
=ЕСЛИ(ЕЧИСЛО(ПОИСК("/";A1));"";ПСТР(A1;ПОИСКПОЗ(1=1;ЕОШ(--ПСТР(A1;СТРОКА($1:$10);1));0);ДЛСТР(A1)))
К сообщению приложен файл: _4809731.xlsx (43.6 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениечисто по примеру формула массива
Код
=ЕСЛИ(ЕЧИСЛО(ПОИСК("/";A1));A1;ПСТР(A1;1;ПОИСКПОЗ(1=1;ЕОШ(--ПСТР(A1;СТРОКА($1:$10);1));0)-1))

и
Код
=ЕСЛИ(ЕЧИСЛО(ПОИСК("/";A1));"";ПСТР(A1;ПОИСКПОЗ(1=1;ЕОШ(--ПСТР(A1;СТРОКА($1:$10);1));0);ДЛСТР(A1)))

Автор - китин
Дата добавления - 08.11.2017 в 11:09
buchlotnik Дата: Среда, 08.11.2017, 11:36 | Сообщение № 7
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Вариант на регулярках (массивка):[vba]
Код
Function рег_зам(t$)
    Application.Volatile
    Dim arr(2)
    With CreateObject("VBScript.RegExp")
        .Pattern = "(\d+)([А-Яа-я]+$)"
        If .test(t) Then
            arr(0) = .Replace(t, "$1")
            arr(1) = .Replace(t, "$2")
        Else
            arr(0) = t
            arr(1) = ""
        End If
    End With
    рег_зам = arr
End Function
[/vba]
К сообщению приложен файл: 4809731.xlsm (36.9 Kb)
 
Ответить
СообщениеВариант на регулярках (массивка):[vba]
Код
Function рег_зам(t$)
    Application.Volatile
    Dim arr(2)
    With CreateObject("VBScript.RegExp")
        .Pattern = "(\d+)([А-Яа-я]+$)"
        If .test(t) Then
            arr(0) = .Replace(t, "$1")
            arr(1) = .Replace(t, "$2")
        Else
            arr(0) = t
            arr(1) = ""
        End If
    End With
    рег_зам = arr
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 08.11.2017 в 11:36
sboy Дата: Среда, 08.11.2017, 12:02 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
[offtop]
Вариант на регулярках

Пока колдовал паттерн, Михаил уже все сделал)


Яндекс: 410016850021169
 
Ответить
Сообщение[offtop]
Вариант на регулярках

Пока колдовал паттерн, Михаил уже все сделал)

Автор - sboy
Дата добавления - 08.11.2017 в 12:02
buchlotnik Дата: Среда, 08.11.2017, 12:04 | Сообщение № 9
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
[offtop]
Цитата
Пока колдовал
страшный человек, а я по-старинке с клавиатуры :D [/offtop]
 
Ответить
Сообщение[offtop]
Цитата
Пока колдовал
страшный человек, а я по-старинке с клавиатуры :D [/offtop]

Автор - buchlotnik
Дата добавления - 08.11.2017 в 12:04
Babarabatin Дата: Среда, 08.11.2017, 13:40 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо большое за помощь!)))
 
Ответить
СообщениеСпасибо большое за помощь!)))

Автор - Babarabatin
Дата добавления - 08.11.2017 в 13:40
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделение данных в столбце на несколько столбцов (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!