excel - यदि अन्य वर्कशीट(एक्सेल) पर मूल्य मौजूद है तो ढूँढें



vba excel-vba (1)

मेरे पास एक एक्सेल वर्कशीट पर एक बटन क्लिक ईवेंट से जुड़ा मैक्रो है जब यह ईवेंट आग लगाता है, तो मुझे यह देखने की आवश्यकता है कि मेरे वर्कशीट FeedSampleForm Range("A5:B5").Value मेरे दूसरे वर्कशीट FeedSamples कॉलम B में कहीं भी मौजूद है।

क्या कोई मुझे इसके साथ सहायता कर सकता है? जब मैं एक्सेल की बात आती हूं तो मैं बहुत ही एक उपयोगकर्ता हूं, और यह मेरी पहली बार "विकासशील" इसके साथ है I

संपादित करें :

नीचे वर्तमान कोड यह अलग सहेजे जाने वाली प्रक्रियाओं के लिए है, अगर किसी नए रिकार्ड को सहेजने या पहले बनाए गए रिकॉर्ड को संपादित करने के बाद बचत होती है।

नमूना डेटा के लिए, मैं "FeedSampleForm" की तलाश कर रहा हूं। मानें ("ए 5: बी 5")। मूल्य जो "SR0238" है, मुझे यह देखने की आवश्यकता है कि क्या "SRS0238" कॉलम बी में "FeedSamples" वर्कशीट पर मौजूद है, वर्तमान में "SR0237" - "SR0252" यदि यह अस्तित्व में नहीं है, तो मैं अपने कोड को जोड़ने की कार्यक्षमता के रूप में एक ही कोड का उपयोग कर सकता हूं, लेकिन यदि ऐसा होता है, तो मुझे सहेजते समय उस सटीक पंक्ति पर लिखना होगा।

Sub SaveInspection()
    If modeAdd = True Then
    'Labeler Reg. No.
    Worksheets("FeedSamples").Range("A1").End(xlDown).Offset(1, 0).value = Range("L3:M3").value
    'Feed Report No.
    Worksheets("FeedSamples").Range("B1").End(xlDown).Offset(1, 0).value = Range("A5:B5").value
    'Product No. / Class No.
    Worksheets("FeedSamples").Range("C1").End(xlDown).Offset(1, 0).value = Range("C5").value
    Worksheets("FeedSamples").Range("E1").End(xlDown).Offset(1, 0).value = Range("D5").value
    Worksheets("FeedSamples").Range("F1").End(xlDown).Offset(1, 0).value = Range("E5").value
    'Description No.
    Worksheets("FeedSamples").Range("H5").End(xlDown).Offset(1, 0).value = Range("F5").value
    Worksheets("FeedSamples").Range("I5").End(xlDown).Offset(1, 0).value = Range("G5").value
    Worksheets("FeedSamples").Range("J5").End(xlDown).Offset(1, 0).value = Range("H5").value
    Worksheets("FeedSamples").Range("K5").End(xlDown).Offset(1, 0).value = Range("I5").value
    'Possessor No.
    Worksheets("FeedSamples").Range("L1").End(xlDown).Offset(1, 0).value = Range("J5:K5").value
    'Date
    Worksheets("FeedSamples").Range("M").End(xlDown).Offset(1, 0).value = Range("L5:M5").value
    'Possessor Name
    Worksheets("FeedSamples").Range("AB1").End(xlDown).Offset(1, 0).value = Range("A8:F8").value
    'Possessor Address
    Worksheets("FeedSamples").Range("AC1").End(xlDown).Offset(1, 0).value = Range("A10:F10").value
    'Possessor City/St
    Worksheets("FeedSamples").Range("AD1").End(xlDown).Offset(1, 0).value = Range("A11:E11").value
    'POssessor Zipcode
    Worksheets("FeedSamples").Range("AE1").End(xlDown).Offset(1, 0).value = Range("F11").value
    'Labeler Name
    Worksheets("FeedSamples").Range("AF1").End(xlDown).Offset(1, 0).value = Range("H8:M8").value
    'Labeler Address
    Worksheets("FeedSamples").Range("AG1").End(xlDown).Offset(1, 0).value = Range("H10:M10").value
    'Labeler City/St
    Worksheets("FeedSamples").Range("AH1").End(xlDown).Offset(1, 0).value = Range("H11:L11").value
    'Labeler Zipcode
    Worksheets("FeedSamples").Range("AI1").End(xlDown).Offset(1, 0).value = Range("M11").value
    'Product Name
    Worksheets("FeedSamples").Range("AJ1").End(xlDown).Offset(1, 0).value = Range("A13:I13").value
    '1. Med
    Worksheets("FeedSamples").Range("AK1").End(xlDown).Offset(1, 0).value = Range("J13:K13").value
    '2. Non-Med
    Worksheets("FeedSamples").Range("AL1").End(xlDown).Offset(1, 0).value = Range("L13:M13").value
'No. Bags/Loc. Sampled

    'Total No. Guarantees
    Worksheets("FeedSamples").Range("P").End(xlDown).Offset(1, 0).value = Range("C15:E15").value
    'Flag Sample
    Worksheets("FeedSamples").Range("Q").End(xlDown).Offset(1, 0).value = Range("F15:G15").value
    'Sample Def.
    Worksheets("FeedSamples").Range("R").End(xlDown).Offset(1, 0).value = Range("H15:I15").value
    'Compliance

    'Duplicate

    'Bag Tag Mark or Code
    Worksheets("FeedSamples").Range("U").End(xlDown).Offset(1, 0).value = Range("A17:H17").value
    'On Hand
    Worksheets("FeedSamples").Range("V").End(xlDown).Offset(1, 0).value = Range("I17:K17").value
    'Approx. Wt/Lbs
    Worksheets("FeedSamples").Range("W").End(xlDown).Offset(1, 0).value = Range("L17:M17").value
    'Remarks
    Worksheets("FeedSamples").Range("AA").End(xlDown).Offset(1, 0).value = Range("A19:M19").value
    'Sample Taken From

    'Sample Method

    'Form

    'Probe Size

    'Product No./Class No.
    Worksheets("FeedSamples").Range("D").End(xlDown).Offset(1, 0).value = Range("A23:C23").value

    modeAdd = False
End If

If modeEdit = True Then
    'find the record in "datatable" and save over fields.
    Dim result As Variant
    Dim sheet As Worksheet
    Set sheet = ActiveWorkbook.Sheets("FeedSamples")

    'Range("O3").Formula = "=IF(ISERROR(MATCH(Range("A5:B5").Value, sheet.Range("B:B"), 0)), "Not Found", "Value found on row " & MATCH(Range("A5:B5").Value, sheet.Range("B:B"), 0))"
    'Range("O3").Formula = "=IF(ISERROR(MATCH(12345,A:A,0)),"Not Found","Value found on row " & MATCH(12345,A:A,0)))"

    result = Application.WorksheetFunction.VLookup(Range("A5:B5").value, sheet.Range("B2:B25000"), 2, False)
    'Throws Object Required Error
    MsgBox result
    modeEdit = False
    allowNav = True

End If


End Sub

एक बहुत ही आसान तरीका है कि आप जिस श्रेणी में खोज करना चाहते हैं और उस मूल्य को घोषित करना है जिसे आप ढूंढना चाहते हैं

Sub findValue()

    Dim xlRange As Range
    Dim xlCell As Range
    Dim xlSheet As Worksheet
    Dim valueToFind

    valueToFind = "MyValue"
    Set xlSheet = ActiveWorkbook.Worksheets("Sheet2")
    Set xlRange = xlSheet.Range("B1:B10")

    For Each xlCell In xlRange
        If xlCell.Value = valueToFind Then
            'Do Something
        End If
    Next xlCell

End Sub

मैं मान रहा हूं कि आपकी सीमा ("ए 5: बी 5") एक मर्ज किए गए सेल है क्योंकि आपने संकेत दिया है कि इसमें एक ही मान है। मर्ज किए गए कक्षों को मर्ज के भीतर "शीर्ष बाएं" सेल द्वारा संदर्भित किया जा सकता है (या कम से कम यह कि मैं इसके बारे में सोचता हूं)। इसलिए आपकी ("ए 5: बी 5") की विलय की गई श्रेणी को "(A5") के रूप में संदर्भित किया जा सकता है वैसे भी, यह आपके ऊपर की गई विधि का एक संशोधित संस्करण है जो आपकी आवश्यकताओं के लिए अधिक उपयुक्त है।

Sub findValue(ByVal valueToFind As String)

    Dim xlRange As Range
    Dim xlCell As Range
    Dim xlFormSheet As Worksheet
    Dim xlSamplesSheet As Worksheet
    Dim iLastRow As Integer
    Dim iRow As Integer
    Dim bFound As Boolean

    bFound = False
    Set xlFormSheet = ActiveWorkbook.Worksheets("FeedSampleForm")
    Set xlSamplesSheet = ActiveWorkbook.Worksheets("FeedSamples")

    iLastRow = xlSamplesSheet.Range("B1").End(xlDown).Row

    Set xlRange = xlsamplesheet.Range("B1:B" & iLastRow)

    For Each xlCell In xlRange
        If xlCell.value = valueToFind Then
            bFound = True '<-- The value was found
            iRow = xlCell.Row '<-- Here is the row that the value was found on
        End If

        If bFound Then Exit For '<-- Optional: Exit the for loop once the value is found the first time
    Next xlCell

End Sub




vlookup