2016-06-30 2 views
0

Мне просто нужно простое решение для переноса данных любых данных по количеству столбцов, указанных в каждой строке.Колонки по указанному количеству

Например:

shift         
2   x x x x   
4     x x x  
5      x x x x 

так что для 2 первых 2 колонок пусты, и данные сдвигается в ячейке 3 на 4 первые 4 столбцов являются пустыми, и данные сдвигаются в камеру 5.

+0

некоторые данные могут быть сотни столбцов по горизонтали и есть сотни строк, поэтому мне нужна эта помощь .. – guy

+0

Я не понимаю ваш вопрос. Не могли бы вы уточнить или добавить изображение ожидаемого результата? – Brian

+0

Вы действительно хотите 'vba' для этого? Если это так, вам нужно предоставить код, который вы написали, чтобы попытаться выполнить это. SO не является «напишите код для меня, пожалуйста» на веб-сайте. –

ответ

0

Начиная с:

enter image description here

Запуск этого:

Sub Kolumator() 
    Dim i As Long, N As Long 
    Dim K As Long, j As Long 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 1 To N 
     K = Cells(i, 1).Value 
     Cells(i, 1).Clear 
     For j = 1 To K - 1 
      Cells(i, 1).Insert shift:=xlToRight 
     Next j 
    Next i 
End Sub 

будет производить:

enter image description here

+0

спасибо огромное .. и спасибо всем за помощь !! – guy

1

Это работает для меня

Sub test() 

Dim ws As Worksheet 
Dim rng As range 
Dim cell As range 


Set ws = ThisWorkbook.Worksheets(1) 
Set rng = range("A1", ws.range("A1").End(xlDown)) 

For Each cell In rng 
    Dim i As Integer 
    For i = 1 To cell.Value 

     cell.Insert xlShiftToRight 

    Next i 

Next cell 


End Sub 
0

Это должно работать для вас

Option Explicit 

Sub MoveCells() 

Dim cell As Range 
Dim ws As Worksheet 
Set ws = Worksheets("Sheet1") 

For Each cell In ws.Range(Cells(1, 1), Cells(Cells.Rows.Count, "A").End(xlUp)) 
Range(Cells(cell.row, 2), Cells(cell.row, 2).End(xlToRight)).Cut Range(Cells(cell.row, 2), Cells(cell.row, 2).End(xlToRight)).Offset(0, cell.Value) 
Next cell 

End Sub 
Смежные вопросы