यह अपेक्षाकृत आसान काम होना चाहिए। मैंने मैच फ़ंक्शन और फ़ंक्शन दोनों के साथ प्रयास किया, हालांकि मैं इसे काम पर नहीं ला सकता।

यह एक उदाहरण है: यहां छवि विवरण दर्ज करें

यही वह है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं: यहां छवि विवरण दर्ज करें

मैं कुछ वांछित स्ट्रिंग्स द्वारा A1 और B1 में जो कुछ भी है उसे अधिलेखित कर देता हूं। मैं 'सबटोटल' को 'टोटल' से रिप्लेस करता हूं।

कॉलम सी से एफ में कुछ यादृच्छिक शोर है, और मैं इसे "काउंटर" से बदलना चाहता हूं। यह वांछित के रूप में काम करता है, लेकिन मैं "कुल" -1 वाले कॉलम की संख्या के साथ लूप में "6" को बदलकर इसे स्वचालित करना चाहता हूं।

कोई विचार इसे काम पर कैसे लाया जाए?

यहाँ मेरा कोड है:

Sub test()
    Set sht = Worksheets(1)
    sht.Cells(1, "A").Value = "Name"
    sht.Cells(1, "B").Value = "Age"
    sht.Cells.Replace What:="*Total*", Replacement:="Total"
    For i = 3 To 6
        sht.Cells(1, i).Value = i - 2
    Next
End Sub

समाधान

जाहिरा तौर पर मैंने खोज समारोह का गलत इस्तेमाल किया। यहां खोज फ़ंक्शन के साथ एक कार्यशील समाधान है।

Sub test()
    Dim search As Range
    Dim n As Integer
    Set sht = Worksheets(1)
    sht.Cells(1, "A").Value = "Name"
    sht.Cells(1, "B").Value = "Age"
    sht.Cells.Replace What:="*Total*", Replacement:="Total"
    Set search = sht.Rows(1).Find(What:="Total", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    n = search.Column - 1
    For i = 3 To n
        sht.Cells(1, i).Value = i - 2
    Next
End Sub
0
User123456789 4 नवम्बर 2020, 13:34

2 जवाब

सबसे बढ़िया उत्तर

बदलें और गिनें

Option Explicit

Sub test()
    Const cRow As Long = 1
    Const First As Long = 3
    
    Dim sht As Worksheet
    Dim colNum As Long
    Dim Last As Variant
    
    Set sht = Worksheets(1)
    sht.Cells(cRow, "A").Value = "Name"
    sht.Cells(cRow, "B").Value = "Age"
    sht.Rows(cRow).Replace What:="*Total*", Replacement:="Total"
    Last = Application.Match("Total", Rows(cRow), 0)
    
    If Not IsError(Last) Then
        For colNum = First To Last - 1
            sht.Cells(cRow, colNum).Value = colNum - First + 1
        Next
    End If

End Sub

या:

Sub test2()
    Const cRow As Long = 1
    Const First As Long = 3
    
    Dim sht As Worksheet
    Dim colNum As Long
    Dim Last As Variant
    
    Set sht = Worksheets(1)
    sht.Cells(cRow, First - 2).Value = "Name"
    sht.Cells(cRow, First - 1).Value = "Age"
    sht.Rows(cRow).Replace What:="*Total*", Replacement:="Total"
    Last = Application.Match("Total", Rows(cRow), 0)
    
    If Not IsError(Last) Then
        For colNum = First To Last - 1
            sht.Cells(cRow, colNum).Value = colNum - First + 1
        Next
    End If

End Sub
1
VBasic2008 4 नवम्बर 2020, 14:04

मैं इस तरह कोड का उपयोग करूंगा: -

Sub test()

    Dim Arr As Variant
    
    Arr = Array("Name", "Age", 1, 2, 3, 4, "Total")
    Worksheets(1).Cells(1, 1).Resize(1, UBound(Arr) + 1).Value = Arr
End Sub

ध्यान दें कि 1 से 4 तक की संख्याएं संख्याओं के रूप में डाली जाएंगी। यदि आप चाहते हैं कि वे इस तरह के उद्धरण चिह्नों के साथ टेक्स्ट के चारों ओर हों, Arr = Array("Name", "Age", "1", "2", "3", "4", "Total")

-1
Variatus 4 नवम्बर 2020, 13:59