Какой самый быстрый способ пройти объект Excel Range в обратном направлении? - PullRequest
5 голосов
/ 22 декабря 2008

Я использую VBA в Excel VBE, но c # или vb в порядке. Эта концепция должна распространяться на все языки.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2008

Не уверен, что вы имеете в виду. Вы хотите пройти снизу вверх, а не сверху вниз?

Это должно сделать:

Dim myrange As Range
Set myrange = Range("B3:E10")

Dim row As Integer, col As Integer
For row = myrange.Rows.Count To 1 Step -1
    For col = myrange.Columns.Count To 1 Step -1
        Debug.Print myrange(row, col).Value  
    Next col
Next row
1 голос
/ 23 декабря 2008

Если вы работаете с диапазонами более нескольких ячеек и не нуждаетесь в изменении ячеек, всегда рассматривайте возможность извлечения значений в массив и работайте с этим: взаимодействие между кодом и рабочим листом относительно (очень) дорого. Если вы работаете со сборкой .NET, это удваивается (может быть, в три раза, а может и больше), потому что есть еще несколько шагов, связанных с циклом.

В VBA примерно так:

Dim vals As Variant
Dim row As Long, col As Long

vals = Range("A1:Z100") ' or whatever
For col = UBound(vals,2) To LBound(vals,2) Step -1
    For row = UBound(vals) To LBound(vals) Step -1
        DoSomethingInterestingWith vals(row, col)
    Next
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...