स्थिति:
सेल "A1" पर मेरा मान "1" है
सेल "A10" पर मेरे पास "2" का मान है
सेल "A20" पर मेरा मान "3" है
सेल "ए 30" पर मेरे पास "4" मान है

मैं एक्सेल वीबीए के साथ क्या करना चाहता हूं:
A1 और A10 के बीच खाली सेल होते हैं। मैं चाहता हूं कि A2:A9 A10 के मान से भरा हो, जिसका अर्थ है "2"।
A10 और A20 के बीच खाली सेल होते हैं। मैं चाहता हूं कि A11:19 A20 के मान से भरा हो, जिसका अर्थ है "3"।

समस्या यह है कि A1 से A30 तक की सीमा निश्चित नहीं है। मैं उन कोशिकाओं के लिए पूरी पंक्ति खोजना चाहता हूं जो खाली नहीं हैं और उनके बीच की कोशिकाओं को ऊपरी सेल से भरना है जो भरा हुआ है।

संपादित करें:
अधिक व्याख्या करने के लिए, मेरे पास एक तालिका के साथ एक एक्सेस डेटाबेस है जो तिथियों से भरा है और एक तालिका जो संख्याओं से भरी हुई है।

मैं एक एक्सेल शीट पर एक रिपोर्ट बनाना चाहता हूं।

Dim Daten As Variant
Daten = Array(rs!DatumJMinus8Monate, rs!DatumJ, rs!DatumI, rs!DatumH, rs!DatumG, rs!DatumF, rs!DatumE, rs!DatumD, rs!DatumC, rs!DatumB, rs!DatumA, rs!DatumA4Monate)
Dim Bedarfe As Variant
Bedarfe = Array(rs!BedarfJ8Monate, rs!BedarfJ, rs!BedarfI, rs!BedarfH, rs!BedarfG, rs!BedarfF, rs!Bedarfe, rs!BedarfD, rs!BedarfC, rs!BedarfB, rs!BedarfA, rs!BedarfA, "")

Dim neuereintrag As Boolean
bedarfindex = 0
For Each element In Daten
    i = 7
    For jahre = 1 To 10
        If Cells(1, i + 1) = Year(element) Then
            For monate = 1 To 12
                If Cells(2, i + monate) = Month(element) Then
                    Cells(zeile, i + monate) = Bedarfe(bedarfindex)
                    Cells(zeile, i + monate).Font.Bold = True
                    bedarfindex = bedarfindex + 1
                    neuereintrag = True
                ElseIf IsEmpty(Cells(zeile, i + monate)) Or neuereintrag = True Then
                    Cells(zeile, i + monate) = Bedarfe(bedarfindex)
                    neuereintrag = False
                End If
            Next monate
        End If
        i = i + 12
    Next jahre
Next element

चित्र में लाल घेरे में संख्याओं को हटाना है।

Excel-Report-Sheet Screenshot

1
user6451039 10 जिंदा 2017, 16:56
आपने कहा है कि आपने कई तरीके आजमाए हैं, क्या आप कुछ दिखा सकते हैं कि आपने क्या किया? यह कोई 'मेरे लिए कोड' साइट नहीं है, लेकिन यदि आप हमें शुरुआत करने के लिए कुछ देते हैं तो हम आपके लक्ष्य तक पहुँचने में आपकी मदद करेंगे!
 – 
PartyHatPanda
10 जिंदा 2017, 16:59
अपना प्रश्न संपादित करें और उसमें अपना code जोड़ें।
 – 
ManishChristian
10 जिंदा 2017, 17:03
मैं इसे कुछ ही मिनटों में करूँगा, कुछ समय चाहिए
 – 
Oemer
10 जिंदा 2017, 17:08
कोड जर्मन में है, क्या आप चाहते हैं कि मैं वेरिएबल नामों को अंग्रेजी में बदल दूं?
 – 
Oemer
10 जिंदा 2017, 17:19
On the Cell "A30" i have the value "4" - क्या यह मान 1048576 / 65536 पंक्ति में कॉपी हो जाता है?
 – 
Darren Bartrup-Cook
10 जिंदा 2017, 17:25

2 जवाब

नीचे से ऊपर की ओर काम करने के रास्ते पर:

Sub FillUp()
    Dim N As Long
    Dim i As Long
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = N - 1 To 1 Step -1
        If Cells(i, 1).Value = "" Then Cells(i, 1).Value = Cells(i + 1, 1).Value
    Next i
End Sub
0
Gary's Student 10 जिंदा 2017, 17:19
हे, यह वास्तव में अच्छा काम करता है! आपको धन्यवाद! केवल एक चीज है, मैंने विवरण में गलती की है। मैं A1, H1, O1 इत्यादि के बीच की कोशिकाओं को भरना चाहता था। एक स्तंभ नहीं, बल्कि एक पंक्ति। मैं आपका कोड बदलने की कोशिश करूंगा लेकिन मैं आपके लिए भी आभारी रहूंगा यदि आप मुझे बता सकते हैं कि मुझे क्या बदलना है कि यह पंक्तियों के साथ भी काम करेगा?
 – 
Oemer
10 जिंदा 2017, 17:32
1
आपको धन्यवाद! मैंने यह किया है! तुम मेरे हीरो हो! यह कोड है: Sub FillUp() Dim N As Long Dim i As Long N = Cells(1, Columns.Count).End(xlToLeft).Column For i = N - 1 To 1 Step -1 If Cells(1, i).Value = "" Then Cells(1, i).Value = Cells(1, i + 1).Value Next i End Sub
 – 
Oemer
10 जिंदा 2017, 17:47
बहुत बढ़िया !!
 – 
Gary's Student
10 जिंदा 2017, 17:49

शायद कुछ ऐसा। इसे थोड़ा काम करने की आवश्यकता है क्योंकि यह विफल हो जाएगा यदि दो मान एक दूसरे के बगल में हैं, या कॉलम 1 में कोई मान नहीं है।

Sub AutoFill()

    Dim rCell1 As Range, rCell2 As Range

    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last column containing data, set both references to this
        'so the Do While doesn't fall over on the first loop.
        Set rCell2 = .Cells(1, .Columns.Count).End(xlToLeft) '1 is the row number it's looking at.
        Set rCell1 = rCell2

        'Find next cell to the left containing data and fill between these two columns.
        Do While rCell1.Column <> 1
            Set rCell1 = rCell2.End(xlToLeft)
            .Range(rCell1, rCell2.Offset(, -1)).FillRight
            Set rCell2 = rCell1
        Loop
    End With

End Sub
0
Darren Bartrup-Cook 10 जिंदा 2017, 17:45