Вам необходимо учитывать j
И k
при выборе строки для записи.
Возможно, это смещение меньше, чем вы хотите, поэтому вам потребуетсячтобы настроить его, но если вы хотите, чтобы каждый элемент записывался последовательно без пробелов, то должно работать следующее:
For j = 2 To rownum 'rownum = 502
For k = 3 To 7 Step 1 'ref_row step 1
Workbooks(tdrname).Worksheets("CatSh").Range("D" & CStr((j * (7 - 3 + 1)) + k)) _
= j 'Workbooks(tdrname).Worksheets("Transaction in Specified Period").range("P" & j).Value
Workbooks(tdrname).Worksheets("CatSh").Range("E" & CStr((j * (7 - 3 + 1)) + k)) _
= k 'Workbooks(tdrname).Worksheets("CatSh").range("B" & k).Value
Next k
Next j
Обратите внимание, что 7 - 3
в CStr((j * (7 - 3 + 1)) + k))
также потребуется настроитьесли вы измените For k = 3 To 7 Step 1
часть определения вашего цикла.