2016-04-07 2 views
-2

Устранение проблемы с функцией, которая имеет несколько переменных в цикле, которые необходимо изменить. У меня есть данные, которые размещены в несколько строк, но раздражающее количество столбцов. Я беру данные и укладываю их поверх друг друга, чтобы их можно было манипулировать больше. Мне нужен способ изменить обе переменные y & n на том же next в противном случае он застревает в бесконечном цикле и падает.Решение для нескольких запросов

Я хочу, чтобы y продолжал нормальный шаг, но нужно изменить с ними n, иначе данные просто переписываются и повторяются.

Sub pasteanswers() 
Dim LastCol As Integer 
Dim y As Integer 
Dim x As Integer 
Dim n As Integer 
Dim v As Integer 



With ActiveSheet 
     LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column - 7 
     r2s = (LastCol/2) 

End With 

For x = 6 To 28 
For n = 1 To r2s 
For y = 6 To 1721 

Cells(y, 8).Value = Cells(x, ((2 * n + 8))).Value 
Cells(y, 9).Value = Cells(x, ((2 * n) + 9)).Value 



Next y 
Next n 
Next x 


End Sub 
+1

Может избавиться от петли и приращения ... 'п = п + 1 'до следующего у – Davesexcel

+0

это звучит как хорошее решение! Можете ли вы подробнее рассказать о том, где я могу найти эту информацию? –

+2

Ничего сложного, если вы удалили цикл 'n', установите' n = 0' перед циклами и 'n = n + 1' перед' next y', "n" будет увеличиваться на 1 каждый раз, y'. – Davesexcel

ответ

0

Если вам нужно, чтобы n и y были равны, устраните n и используйте y в своем месте. Без примера данных и ожидаемых результатов, это трудно проверить это для вас ...

Sub pasteanswers() 
Dim LastCol As Integer 
Dim y As Integer 
Dim x As Integer 
Dim v As Integer 

With ActiveSheet 
     LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column - 7 
     r2s = (LastCol/2) 

End With 

For x = 6 To 28 
For y = 6 To r2s 

Cells(y, 8).Value = Cells(x, ((2 * y + 8))).Value 
Cells(y, 9).Value = Cells(x, ((2 * y) + 9)).Value 

Next y 
Next x 

End Sub 
+0

, к сожалению, они не в одном масштабе. я пытаюсь выяснить, есть ли выход для –

0
For n = 1 To r2s 
    y = n + 5 
    If y > 1721 Then Exit For 

    Cells(y, 8).Value = Cells(x, ((2 * n + 8))).Value 
    Cells(y, 9).Value = Cells(x, ((2 * n) + 9)).Value 

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