2

В Excel у меня есть данные в ячейках от A1 до O5 (15 X 25).

Я хочу переставить вещи так, чтобы у меня было следующее

  [A1][B1][C1]   
  [D1][E1][F1]   
  [G1][H1][I1]   
  [J1][K1][L1]  
  [M1][N1][O1]   
  [A2][B2][C2]   
  [D2][E2][F2]

...и так далее.

Я пытался и не смог найти элегантный способ сделать это в Excel. Может ли кто-нибудь, пожалуйста, посоветовать мне?

Я видел это, но они, кажется, играют немного в другую игру.

2 ответа2

2

Вот выстрел VBA:

Option Explicit

Sub rearrange()
Dim aValues As Variant
Dim i As Integer, j As Integer
Dim lRow As Long

'store the values in an array
aValues = Worksheets("Sheet1").Range("A1:O5").Value
lRow = 1

With Worksheets("Sheet2")
    For i = 1 To UBound(aValues, 1)
        For j = 1 To UBound(aValues, 2) Step 3
            .Cells(lRow, 1).Value = aValues(i, j)
            .Cells(lRow, 2).Value = aValues(i, j + 1)
            .Cells(lRow, 3).Value = aValues(i, j + 2)
            lRow = lRow + 1
        Next j
    Next i
End With
End Sub
2

Это отвечает вашим потребностям?

  • Установите E21 =INT((ROW(A1)-1)/5)
  • Установите F21 на =MOD(ROW(A1)-1,5)
  • Установите для A21 значение =INDIRECT("R" & ($E21+1)&"C" & (COLUMN(A21)+$F21*3),FALSE)
  • Скопируйте A21 в B21 и C21
  • Скопируйте A21:F21 на столько строк, сколько требуется.
  • Используйте Вставить специальные значения, чтобы преобразовать A21:Cnn в значения, а не в формулу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .