2014-11-03 6 views
0

Я использую Excel 2007 и имеет 5000 операторов в диапазоне A1: A5000 и четыре альтернативы для каждого оператора в диапазоне B1: E5000. Я хочу преобразовать его в другой slyle, где все данные поступают в диапазон G1: 25000, где все четыре альтернативы будут подпадать под каждое утверждение. Я записал макрос, но я не знаю, как его зацикливать, а делать вручную невозможно. Нужна помощь здесь ... спасибо.VBA excel macro для обработки 5000 строк и 5 столбцов

Пример:

Statement1 - AlternativeA 1 - AlternativeA 2 - AlternativeA 3 - AlternativeA 4 
Statement2 - AlternativeB 1 - AlternativeB 2 - AlternativeB 3 - AlternativeB 4 
Statement3 - AlternativeC 1 - AlternativeC 2 - AlternativeC 3 - AlternativeC 4 
Statement4 - AlternativeD 1 - AlternativeD 2 - AlternativeD 3 - AlternativeD 4 

Выход:

Statement1 
AlternativeA 1 
AlternativeA 2 
AlternativeA 3 
AlternativeA 4 
Statement2 
AlternativeB 1 
AlternativeB 2 
AlternativeB 3 
AlternativeB 4 
Statement3 
AlternativeC 1 
AlternativeC 2 
AlternativeC 3 
AlternativeC 4 
Statement4 
AlternativeD 1 
AlternativeD 2 
AlternativeD 3 
AlternativeD 4 

ответ

1

Вы не очень для этого нужен VBA. Просто введите формулу

G1: = ИНДЕКС ($ A: $ E, INT ((ROWS ($ 1: 1) -1)/5) + 1, MOD (ROWS ($ 1: 1) -1,5) +1)

и заполните до G25000. Затем скопируйте и вставьте специальные значения

+0

замечательный .... спасибо. никогда не думал, что это могло быть сделано с использованием функции рабочего листа. ура! –

1

Это должно передавать и переносить значения в каждом A: E в колонке G.

Sub AE_2G() 
    Dim r As Long, s As Variant 
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row 
     s = Cells(r, 1).Resize(1, 5) 
     Cells((r - 1) * 5 + 1, 7).Resize(5, 1) = Application.Transpose(s) 
    Next r 
End Sub 
+0

Большое спасибо –

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