Страницы: 1
RSS
Вставить 2-ва новых столбца через каждих 2-ва уже существующих с помощью макроса., Макросом
 
Здраствуйте уважаемые форумчане! Снова обращаюсь за помощью.

ДАНО: Таблица с значениями структурированными по 2-ва столбца. Рисунок1.



ЗАДАЧА: 1)Добавить после каждых 2-х столбцов новые столбцы с записями единички -1.
Выполнить макросом т.к. реальная таблица большая на сотни столбцов и тисячи рядов и таких таблиц много.

2) Повторить тоже самое только с вставкой одного столбца с единичками через каждых два.



Буду ОЧЕНЬ благодарен за помощь знающим людям.
Файл примера прикрепляю.
Изменено: yuraok - 14.07.2020 21:24:40
 
Доброе время суток.
Вариант без вставок
Код
Public Sub AppendTwoColumnsAtLeft()
    Dim vData As Variant, vOut() As Variant
    Dim i As Long, k As Long, id As Long
    vData = ActiveCell.CurrentRegion.Value
    ReDim vOut(1 To UBound(vData, 1), 1 To Application.RoundUp(UBound(vData, 2) / 2, 0) * 4)
    For i = 1 To UBound(vData, 1)
        For k = 1 To UBound(vData, 2) Step 2
            id = 2 * (k - 1)
            vOut(i, id + 1) = vData(i, k)
            vOut(i, id + 2) = vData(i, k + 1)
            vOut(i, id + 3) = 1
            vOut(i, id + 4) = 1
        Next
    Next
    ActiveCell.CurrentRegion.Cells(1, 1).Resize(UBound(vOut, 1), UBound(vOut, 2)).Value = vOut
End Sub
Зачем повторять уже сделанное, но застенчиво не приложенное?
 
Цитата
Добавить после каждых 2-х столбцов новые столбцы с записями единички -1.
Код
Sub InsertColumns()
Dim i As Long
Dim iLastRow As Long
Dim iLastCol As Integer
 iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
 iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  For i = iLastCol - 1 To 3 Step -2
    Columns(i).Resize(, 2).Insert
    Range(Cells(1, i), Cells(iLastRow, i + 1)) = 1
  Next
End Sub
 
Код
Sub Ins2Columns()
  Dim c&
  For c = Cells(1, Columns.Count).End(xlToLeft).Column - 1 To 3 Step -2
    Columns(c).Resize(, 2).Insert shift:=xlShiftToRight
  Next
End Sub
Изменено: Ігор Гончаренко - 14.07.2020 22:33:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Эта тема разве о другом? Завтра Вам нужно будет через три столбца вставвлять - опять на форум?
 
Всем спасибо за ответы!
Цитата
vikttur написал:
Эта тема  разве о другом? Завтра Вам нужно будет через три столбца вставвлять - опять на форум?
Уже почти все сделал, завтра отдохнем ))
Страницы: 1
Наверх