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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2012, 13:24   #1
AllenJ
Пользователь
 
Регистрация: 18.01.2011
Сообщений: 45
По умолчанию Как разбить ячейку с цифрами?

В ячейке есть некий набор цифр, вида

01020304050607

Как сделать, чтобы макрос разбивал эти цифры на отдельные ячейки?

То есть: 01 02 03 04 05 06 07 (Каждая цифра (включая 0) разделяется в соседнюю ячейку).

То есть, например, набор цифр находится в A1 - 01020304050607

--- Жмем макрос:

A1 - 01
B1 - 02
C1 - 03
D1 - 04
E1 - 05

И т.д.

Уточнение: цифры всегда имеют вид двухзначный, то есть от 01 до 99.

Есть макрос, который работает правильно, но разбивает цифры, имеющие пробел, то есть: 01 02 03 04 05 06 07. Каждую из этих цифр (двухзначную!) он вставляет в соседнюю ячейку.

Можно его модернизировать так, чтобы разбивал точно так же, но из такого изначального вида: 01020304050607

Код:
Application.DisplayAlerts = False
    Selection.TextToColumns Destination:=Selection, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(2, 1), Array(5, 1), Array(8, 1), Array(11, 1), _
        Array(14, 1), Array(17, 1), Array(20, 1), Array(23, 1), Array(26, 1)), _
        TrailingMinusNumbers:=True
        Application.DisplayAlerts = True
Спасибо!
AllenJ вне форума Ответить с цитированием
Старый 11.08.2012, 13:45   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если данные в первом столбце, то во второй пишите:
Код:
=ПСТР(RC1;(СТОЛБЕЦ()-2)*2+1;2)
или
=ПСТР($A1;(СТОЛБЕЦ()-2)*2+1;2)
копируете вправо раз 6-7 и вниз сколько нужно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.08.2012, 13:55   #3
AllenJ
Пользователь
 
Регистрация: 18.01.2011
Сообщений: 45
По умолчанию

Спасибо за идею, пригодится в некоторых случаях, но тут нужен именно макрос, так как к ячейкам уже применена другая формула, кроме того, с новыми документами не так просто иметь дело в таком случае, так как придется прописывать формулу и прочее.
AllenJ вне форума Ответить с цитированием
Старый 11.08.2012, 14:13   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Запишите сами в макрос это действие: Данные - Текст по столбцам - фиксированный - расставьте стрелки через каждые 2 символа с запасом (например, до 20 позиции) - выделите все столбцы, формат - Текстовый (чтобы сохранить нули) - Готово.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.08.2012, 14:43   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Split2(s As String, r0 As Long, c0 As Long, Optional p As Long = 0)
  If (p + 1) * 2 > Len(s) Then Exit Sub _
    Else Cells(r0, c0 + p) = "'" & Mid(s, p * 2 + 1, 2): Split2 s, r0, c0, p + 1
End Sub

Sub Banzay()
  Const DataClmn As Long = 1, ResultClmn As Long = 2
  Dim r As Long
  For r = 1 To Cells(Rows.Count, DataClmn).End(xlUp).Row: Split2 Cells(r, 1), r, ResultClmn: Next
End Sub
укажите в Banzay колонку с данными (DataClmn), начальную колонку, куда выводить данные (ResultClmn) и выполните ее.

удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.08.2012, 14:52   #6
AllenJ
Пользователь
 
Регистрация: 18.01.2011
Сообщений: 45
По умолчанию

Всем спасибо!!
AllenJ вне форума Ответить с цитированием
Старый 11.08.2012, 16:26   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Игорь, привет. А чем текст по столбцам плох? Фиксированной ширины.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 11.08.2012, 16:44   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а чем была формула плоха?

я смотрел в сторону "текста фиксированной ширины". но написал нечто, для тренировки, не выкидывать же теперь, вот и появилось здесь процедура Split2. не знаю как AllenJ-у, Сереж, но допускаю, что тебе это могло показаться забавным.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.08.2012, 16:50   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Да не, все нормально:-) Просто и правда позабавило, что AllenJ сам же выложил подходящее решение. Угадал все буквы но не смог назвать слова:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить ячейку на буквы и присвоить каждой букве число Apostolx Microsoft Office Excel 8 10.02.2012 10:17
запись любого целого числа n (n<3999) арабскими цифрами перевести в запись римскими цифрами (на языке C) qazse Помощь студентам 1 24.11.2011 12:05
Как разбить число на цифрыКак разбить число на цифры: 3241 => 3,2,4,1 (Pascal) Banderas123 Помощь студентам 3 07.12.2009 18:26
разбить ячейку и ивписать тхт Axe_L Помощь студентам 2 22.10.2007 14:50
как разбить текстовую ячейку на отдельные ячейки? zetrix Microsoft Office Excel 0 31.10.2006 07:46