वर्तमान में मैं मैन्युअल रूप से मानों को सरणी में दर्ज कर रहा हूं, साइन_एरे (ए, बी, सी)। जहाँ c स्तर संख्या है। तो नीचे मेरा आउटपुट देखें, जहां सी = 1 सरणी में केवल दो इनपुट हैं। जब c = 2 (या स्तर 2) में 4 इनपुट होते हैं। स्तर ३ = ८ इनपुट, स्तर ४ में १६ इनपुट हैं। लेकिन यह सब लिखना बहुत थकाऊ हो रहा है।
मैं वास्तव में इससे जूझ रहा हूं। मुझे 1 या 2 के सभी संयोजनों को एक सरणी में लिखना होगा, और इसके आउटपुट की तलाश करनी होगी:
1
2
1, 1
1, 2
2, 1
2, 2
1, 1, 1
2, 1, 1
1, 2, 1
1, 1, 2
2, 2, 1
2, 1, 2
1, 2, 2
2, 2, 2
1, 1, 1, 1
2, 1, 1, 1
etc
कृपया नीचे देखें कि मुझे कितनी दूर मिला है, लेकिन मुझे नहीं पता कि 1 या 2 के बीच अंतर करने के लिए क्या करना चाहिए। किसी भी मदद की बहुत सराहना की जाएगी। फिलहाल मैं मैन्युअल रूप से संयोजनों में खुद को डाल रहा हूं, लेकिन मेरे पास जितने अधिक आयाम हैं, मैं उतना ही बड़ा हो रहा हूं।
मुझे कोई फर्क नहीं पड़ता कि प्रत्येक स्तर के निर्माण के लिए लूप है।
levels_to_use = 4
for i = 1 to levels_to_use ^ 2
for j = 1 to levels_to_use
' in here how to chose between 1 or 2
sign_array(i, j, levels_to_use) = 1
next
next
1 उत्तर
कुछ समय पहले, मेरे पास करने के लिए कुछ भी बेहतर नहीं था और मैंने ठीक वही कोड लिखा था जिसकी आपको तलाश है - https://www.vitoshacademy.com/vba-nested-loops-with-recursion/
इस प्रकार, यदि आप इसे थोड़ा बदलते हैं, _
से बचते हैं और size
चर को लूप में डालते हैं, तो यह वांछित परिणाम प्रिंट करता है:
यदि आप c = Array(1, 2)
को c = Array(1, 2, 3)
में बदलते हैं तो यह सिस्टम में एक तीसरा तत्व जोड़ देगा।
Sub Main()
Static size As Long
Static c As Variant
Static arr As Variant
Static n As Long
c = Array(1, 2)
n = UBound(c) + 1
For size = 1 To 4
ReDim arr(size - 1)
EmbeddedLoops 0, size, c, n, arr
Debug.Print "---------"
Next size
End Sub
Function EmbeddedLoops(index, k, c, n, arr)
Dim i As Variant
If index >= k Then
PrintArrayInOneLine arr
Else
For Each i In c
arr(index) = i
EmbeddedLoops index + 1, k, c, n, arr
Next i
End If
End Function
Public Sub PrintArrayInOneLine(myArray As Variant)
Dim counter As Long
Dim sArray As String
For counter = LBound(myArray) To UBound(myArray)
sArray = sArray & myArray(counter)
Next counter
Debug.Print sArray
End Sub
संबंधित सवाल
नए सवाल
excel
केवल एक्सेल ऑब्जेक्ट्स या फ़ाइलों, या जटिल फॉर्मूला विकास के खिलाफ प्रोग्रामिंग पर प्रश्नों के लिए। यदि आप लागू हो तो आप Excel टैग को VBA, VSTO, C #, VB.NET, PowerShell, OLE स्वचालन और अन्य प्रोग्रामिंग संबंधी टैग और प्रश्नों के साथ जोड़ सकते हैं। सुपर उपयोगकर्ता पर एकल कार्यपत्रक कार्यों के लिए एमएस एक्सेल के बारे में सामान्य सहायता उपलब्ध है।