এক্সেলের প্রতিটি সারিটির লুপটি লুপ করুন


116

এটি সেই জিনিসগুলির মধ্যে একটি যা আমি নিশ্চিত যে এটির জন্য একটি বিল্ট-ইন ফাংশন রয়েছে (এবং আমি এটি অতীতেও ভালভাবে বলতে পারি) তবে আমি এটি মনে রাখতে আমার মাথা আঁচড়াচ্ছি।

এক্সেল ভিবিএ ব্যবহার করে আমি কীভাবে একাধিক-কলাম রেঞ্জের প্রতিটি সারিতে লুপ করব? সমস্ত টিউটোরিয়াল আমি সন্ধান করেছি বলে মনে হচ্ছে কেবলমাত্র এক-মাত্রিক ব্যাপ্তির মধ্য দিয়ে কাজ করা ...


উত্তর:




8

কেবল এটির জন্য হোঁচট খেয়েছে এবং ভেবেছিলাম আমি আমার সমাধানটি প্রস্তাব করব। আমি সাধারণত একটি বহু-ম্লান অ্যারেতে একটি পরিসর নির্ধারণের কার্যকারিতাটি ব্যবহার করতে চাই (আমার ধারণা এটি এটি আমার মধ্যে জেএস প্রোগ্রামারও রয়েছে)।

আমি প্রায়শই এই জাতীয় কোড লিখি:

Sub arrayBuilder()

myarray = Range("A1:D4")

'unlike most VBA Arrays, this array doesn't need to be declared and will be automatically dimensioned

For i = 1 To UBound(myarray)

    For j = 1 To UBound(myarray, 2)

    Debug.Print (myarray(i, j))

    Next j

Next i

End Sub

ভেরিয়েবলগুলিকে রেঞ্জ নির্ধারণ করা ভিবিএতে ডেটা ম্যানিপুলেট করার একটি খুব শক্তিশালী উপায়।


আমি এই ভাবে ভাল পছন্দ করি!
অ্যাথোজ

2
দুটি সুবিধার এটা পক্ষপাতী: 1) অ্যারে পদ্ধতি সবসময় দ্রুততর একটি সীমার মাধ্যমে looping, 2) এটি এর সহজ এবং আপনি এটি ব্যবহার করতে পারেন তুলনায় উভয় নির্দেশাবলী এবং কিছু গণনার পর অ্যারে ফিরে লিখুন: Range("A1:D4") = myarrayদ্রষ্টব্য: Dim myarray হিসাবে বৈকল্পিক; ডিফল্টরূপে এটি 1 বেসড 2 ডিিম অ্যারের দিকে মনোযোগ দিন
টিএম

7

লুপগুলিতে, আমি সবসময় Cellsক্লাস ব্যবহার করতে পছন্দ করি , আর 1 সি 1 রেফারেন্স পদ্ধতিটি ব্যবহার করে:

Cells(rr, col).Formula = ...

এটি আমাকে দ্রুত এবং সহজেই কক্ষের একটি ব্যাপ্তি সহজেই লুপ করতে দেয় :

Dim r As Long
Dim c As Long

c = GetTargetColumn() ' Or you could just set this manually, like: c = 1

With Sheet1 ' <-- You should always qualify a range with a sheet!

    For r = 1 To 10 ' Or 1 To (Ubound(MyListOfStuff) + 1)

        ' Here we're looping over all the cells in rows 1 to 10, in Column "c"
        .Cells(r, c).Value = MyListOfStuff(r)

        '---- or ----

        '...to easily copy from one place to another (even with an offset of rows and columns)
        .Cells(r, c).Value = Sheet2.Cells(r + 3, 17).Value


    Next r

End With
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.