Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
20.04.2024, 08:39:49

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Разбить ячейку в стобце "А" на значения для прогресий. Объединить макросы в один
Страниц: [1]   Вниз
Печать
Автор Тема: Разбить ячейку в стобце "А" на значения для прогресий. Объединить макросы в один  (Прочитано 2846 раз)
0 Пользователей и 1 Гость смотрят эту тему.
denyssanitskyi
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« : 27.07.2020, 20:56:01 »

Здравствуйте ! Помогите объединить эти макросы в один и работоспособный.
Краткое описание: Нужно разбить ячейку в стобце "А" на значения для прогресий.

Код: (vb)
Sub DataSeriesA()
    Range("Таблица1[прогон]").Select
    Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
        "-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
        TrailingMinusNumbers:=True
        
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To iLastRow
Cells(i, "AB") = Cells(i, "B")
Cells(i, "AB").DataSeries Rowcol:=xlRows, Type:=xlLinear, Date:=xlDay, _
Step:=1, Stop:=Cells(i, "C"), Trend:=False
Next
End Sub
Sub PerviiPustoiStolbec()
'Шаг 1: Объявляем переменные
Dim LastColumn As Long
'Шаг 2: захват последнего использованного номера столбца
LastColumn = Cells(5, Columns.Count).End(xlToLeft).Column
'шаг 3: выбираем следующий пустой столбец
Cells(5, LastColumn).Offset(0, 1).Select
End Sub
Sub PervayaPustayaStroka() 'Шаг 1: Объявляем переменные
Dim LastRow As Long
'Шаг 2: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 1).Offset(1, 0).Select
End Sub


« Последнее редактирование: 27.07.2020, 21:40:54 от vikttur » Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 27.07.2020, 21:47:28 »

Вы бы нормально задачу описали, без ссылок на макросы.
Записан
denyssanitskyi
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #2 : 27.07.2020, 22:30:07 »

Нужно из ячеек столбца "А" последовательно "размножить" значения, например: ячейка "А1" (1-3,10-13) должна создать в строке 1 начиная с "В1" последовательность 1 2 3 "пустая ячейка" 10 11 12 13.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 28.07.2020, 12:17:19 »

Код: (vb)
Sub AutofillProgressive()
    Dim aSp, x, s$, lr&, res(), lcnt&
    s = Range("A1").Value
   
    If s = "" Then
        Exit Sub
    End If
   
   
    For Each x In Split(s, ",")
        If Len(x) Then
            aSp = Split(x, "-")
            If UBound(aSp) > 0 Then
                If IsNumeric(aSp(0)) And IsNumeric(aSp(1)) Then
                    For lr = aSp(0) To aSp(1)
                        ReDim Preserve res(lcnt)
                        res(lcnt) = lr
                        lcnt = lcnt + 1
                    Next
                End If
            End If
        End If
    Next
    If lcnt > 0 Then
        Range("B1").Resize(lcnt).Value = Application.Transpose(res)
    End If
End Sub
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #4 : 28.07.2020, 19:10:02 »

Хотя судя по скрину должно быть вместо этой строки:
Код: (vb)
Range("B1").Resize(lcnt).Value = Application.Transpose(res)

такая:
Код: (vb)
Range("B1").Resize(,lcnt).Value = res
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
denyssanitskyi
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #5 : 28.07.2020, 22:59:03 »

Большое спасибо! Подскажите пожалуйста, как сделать для этого кода цикл по строкам
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #6 : 29.07.2020, 09:07:31 »

Да, у Вас знания явно не дотягивают даже до азов самостоятельного написания кода Улыбка Специально взял кусок из приведенного Вами выше кода:
Код: (vb)
Sub AutofillProgressive()
    Dim aSp, x, s$, lr&, res(), lcnt&
    Dim iLastRow&, i&
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To iLastRow
        s = Range("A" & i).Value
        If s <> "" Then
            lcnt = 0
            Erase res
            For Each x In Split(s, ",")
                If Len(x) Then
                    aSp = Split(x, "-")
                    If UBound(aSp) > 0 Then
                        If IsNumeric(aSp(0)) And IsNumeric(aSp(1)) Then
                            For lr = aSp(0) To aSp(1)
                                ReDim Preserve res(lcnt)
                                res(lcnt) = lr
                                lcnt = lcnt + 1
                            Next
                        End If
                    End If
                End If
            Next
            If lcnt > 0 Then
                Range("B" & i).Resize(, lcnt).Value = res
            End If
        End If
    Next
End Sub
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru