2012-12-21 21 views
10

जब हम पंक्तियों में एक पाश क्या करने जा रहे हैं, तो हम कोड की तरह उपयोग कर सकते हैं निम्नलिखित:एक्सेल VBA लूप

i = 1 
Do 
    Range("E" & i & ":D" & i).Select 
    i = i + 1 
Loop Until i > 10 

लेकिन क्या अगर हम एक स्तंभ पर एक पाश करना चाहते हैं?

क्या हम उपर्युक्त विधि का उपयोग कर सकते हैं?

जबकि एक्सेल में कॉलम ए, बी, सी, ..., वाई, जेड, एए, एबी, एसी, ... आदि जैसे जटिल हैं समस्याएं "ज़ेड से लूप के बीच उत्पन्न होंगी "एए" के लिए।

कैसे हम 'ए' के ​​लिए "Z" से वर्णमाला स्तंभ पाशन और फिर 'एए' में जारी रखा, "अटल बिहारी" और इतने पर

क्या मदद कर सकते हैं क्या है?

उत्तर

21

हां, चलिए एक उदाहरण के रूप Select का उपयोग करते हैं

नमूना कोड: Columns("A").select

कैसे कॉलम लूप करने के लिए:

विधि 1: (आप एक्सेल पता बदलने के लिए सूचकांक का उपयोग कर सकते हैं)

For i = 1 to 100 
    Columns(i).Select 
next i 

विधि 2: (पते का उपयोग)

For i = 1 To 100 
Columns(Columns(i).Address).Select 
Next i 

संपादित करें: पट्टी ओपी के लिए कॉलम

columnString = Replace(Split(Columns(27).Address, ":")(0), "$", "") 

उदा आप 27 कॉलम प्राप्त करना चाहते हैं -> ए.ए., आप इसे इस तरह से प्राप्त कर सकते हैं

+0

+ 1 दोनों तरीकों देने के लिए ... :) हालांकि 2 एक बेकार हो जाता है जब यू है विधि 1. –

+0

क्या आप जानते हैं कि कैसे हम स्ट्रिंग के रूप में पाश के साथ स्तंभ अनुक्रमणिका प्राप्त कर सकते हैं करते हैं? 'ए', 'बी', ..., "ए.ए.", "अटल बिहारी", ..., आदि जैसे इसलिए मैं इसे इस तरह मेरी पाश करने के लिए आवेदन कर सकते हैं: 'रेंज (colIndex और मैं और ":" और colIndex और मैं) .Select' _ "colIndex" excel_ – wahyueka31

+1

में पाश स्तंभ अनुक्रमणिका @Rebel संपादित – Larry

1

तो यह काम करेंगे आपको लूप से इसी तरह के साथ रहना चाहते हैं:

Option Explicit 

Sub selectColumns() 

Dim topSelection As Integer 
Dim endSelection As Integer 
topSelection = 2 
endSelection = 10 

Dim columnSelected As Integer 
columnSelected = 1 
Do 
    With Excel.ThisWorkbook.ActiveSheet 
     .Range(.Cells(columnSelected, columnSelected), .Cells(endSelection, columnSelected)).Select 
    End With 
    columnSelected = columnSelected + 1 
Loop Until columnSelected > 10 

End Sub 

संपादित

वास्तव में आप सिर्फ स्प्रेडशीट के एक इलाके में हर कोशिका के माध्यम से लूप करना चाहते हैं तो कुछ इस तरह का उपयोग करें: प्रयास करने के लिए

Sub loopThroughCells() 

'============= 
'this is the starting point 
Dim rwMin As Integer 
Dim colMin As Integer 
rwMin = 2 
colMin = 2 
'============= 

'============= 
'this is the ending point 
Dim rwMax As Integer 
Dim colMax As Integer 
rwMax = 10 
colMax = 5 
'============= 

'============= 
'iterator 
Dim rwIndex As Integer 
Dim colIndex As Integer 
'============= 

For rwIndex = rwMin To rwMax 
     For colIndex = colMin To colMax 
      Cells(rwIndex, colIndex).Select 
     Next colIndex 
Next rwIndex 

End Sub 
+0

+ 1 ओपी में अब कई विकल्प हैं :) –

+0

क्या आप जानते हैं कि हम स्ट्रिंग के रूप में लूप के साथ कॉलम इंडेक्स कैसे प्राप्त कर सकते हैं? 'ए', 'बी', ..., "ए.ए.", "अटल बिहारी", ..., आदि जैसे इसलिए मैं इसे इस तरह मेरी पाश करने के लिए आवेदन कर सकते हैं: 'रेंज (colIndex और मैं और ":" और colIndex और i)। चयन करें _ "colIndex" excel_ – wahyueka31

+0

@Rebel में लूप कॉलम इंडेक्स के लिए एक चर है जो 'रेंज (कैल्स (i, colIndex) जैसा ही है। कोशिकाएं (i, colIndex))। चुनें '.... जो मैंने अपने सुझाए गए उत्तर में केवल अधिक अनुशासनात्मक नामों के साथ रखा है। लेकिन आपकी टिप्पणी में आपने 'रेंज (colIndex & i & ":" और colIndex और i) का उल्लेख किया है। चयन करें .... कोलन के बाद _repeated_ अनुभाग की कोई आवश्यकता नहीं है:' रेंज (colIndex और i)। चयन करें .. .. जो वास्तव में '.cells (i, colIndex) के बराबर है' – whytheq

7

एक अन्य विधि ओ ut। भी select को प्रतिस्थापित किया जा सकता है जब आप प्रारंभिक कॉलम को रेंज ऑब्जेक्ट में सेट करते हैं। प्रदर्शन के अनुसार यह मदद करता है।

Dim rng as Range 

Set rng = WorkSheets(1).Range("A1") '-- you may change the sheet name according to yours. 

'-- here is your loop 
i = 1 
Do 
    '-- do something: e.g. show the address of the column that you are currently in 
    Msgbox rng.offset(0,i).Address 
    i = i + 1 
Loop Until i > 10 

** दो तरीकों स्तंभ संख्या का उपयोग कर स्तंभ नाम पाने के लिए **

  • स्प्लिट()

कोड

colName = Split(Range.Offset(0,i).Address, "$")(1) 
  • स्ट्रिंग हेरफेर:

कोड

Function myColName(colNum as Long) as String 
    myColName = Left(Range(0, colNum).Address(False, False), _ 
    1 - (colNum > 10)) 
End Function 
+2

+ 1 किसी अन्य विधि के लिए –

+0

क्या आप जानते हैं कि हम स्ट्रिंग के रूप में लूप के साथ कॉलम इंडेक्स कैसे प्राप्त कर सकते हैं? 'ए', 'बी', ..., "ए.ए.", "अटल बिहारी", ..., आदि जैसे इसलिए मैं इसे इस तरह मेरी पाश करने के लिए आवेदन कर सकते हैं: 'रेंज (colIndex और मैं और ":" और colIndex और i)। चुनें ' _ "colIndex" excel_ – wahyueka31

+0

@ रीबेल में लूप कॉलम अनुक्रमणिका के लिए एक चर है। लेकिन जिज्ञासा से, क्योंकि कॉलम के माध्यम से लूप करने के कई प्रभावी तरीके हैं, आप स्ट्रिंग 'कॉलम नाम' क्यों प्राप्त करना चाहते हैं? – bonCodigo

संबंधित मुद्दे