मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जहां यह ई 2 से शुरू होने वाले पूरे कॉलम को पढ़ता है और यदि उस कॉलम में एक सेल का एक विशेष मूल्य है (इस उदाहरण के लिए, ए, ई, आई, ओ, या यू कहें) तो यह प्रवेश करता है सेल F2 में "Y" का मान, हालांकि यह इस पैटर्न को तब तक जारी रखता है जब तक कि यह कॉलम E में भरे हुए सेल से बाहर नहीं निकल जाता।
मैं का तर्क समझता हूँ
Dim ColE As String
For ColE = 2 To Rows.Count
Next i
If E1 = "A" Or "E" Or "I" Or "O" Or "U" Then F2 = "Y"
लेकिन मैं कैसे दोहरा सकता हूं कि ई के पूरे कॉलम के नीचे सभी तरह से कहें जब तक कि यह कॉलम ई में भरे हुए कोशिकाओं से बाहर न हो जाए
3 जवाब
OR
की सूची को लागू करने का एक आसान तरीका यहां दिया गया है:
Sub marine()
Dim s1 As String, s2 As String
s1 = "AEIOU"
For i = 2 To 25
If Range("E" & i).Value <> "" Then
If InStr(s1, Range("E" & i).Value) > 0 Then
Range("F" & i).Value = "Y"
End If
End If
Next i
End Sub
यहां उपयुक्त विकल्प if-loop के साथ सेलेक्ट केस कमांड का उपयोग कर रहा है
for i = 2 to Cells(Rows.Count, 5).End(xlUp).Row '5 = Column E
Select Case Range("E"&i).value
Case "A", "E", "I", "O", "U"
Range("F"&i).value
End Select
next
सेलेक्ट केस का उपयोग करने से आप कॉलम ई में अन्य इनपुट के लिए अलग-अलग कमांड भी दे सकते हैं और आपकी विशिष्ट आवश्यकताओं के लिए अगर-शर्तों की तुलना में इसे संभालना आसान है।
Cells(Rows.Count, 5).End(xlUp).Row '5
यह पांचवें कॉलम (कॉलम ई) में अंतिम प्रविष्टि की पंक्ति संख्या लौटाएगा। आप इसे अंतिम पंक्ति तक पुनरावृति करने के लिए फॉर-लूप में उपयोग कर सकते हैं।
एकाधिक मानदंड खोजें
- कोड को एक मानक मॉड्यूल (जैसे
Module1
) में कॉपी करें। - स्थिरांक अनुभाग में मानों को सावधानीपूर्वक समायोजित करें।
कोड
Option Explicit
Sub searchMultipleCriteria()
' Handle Errors
Const Proc = "searchMultipleCriteria"
On Error GoTo cleanError
' Define constants.
Const SheetName As String = "Sheet1"
Const FirstRow As Long = 2
Const CriteriaCol As Variant = "E" ' 1 or "A"
Dim CriteriaVals As Variant: CriteriaVals = Array("A", "E", "I", "O", "U")
Const ResultCol As Variant = "F" ' 1 or "A"
Const ResultVal As String = "Y"
Dim wb As Workbook: Set wb = ThisWorkbook
' Write values from Criteria Column Range to Criteria Array.
Dim ws As Worksheet: Set ws = wb.Worksheets(SheetName)
Dim rng As Range
Set rng = ws.Columns(CriteriaCol).Find("*", , xlFormulas, , , xlPrevious)
If rng Is Nothing Then GoTo EmptyColumn
If rng.Row < FirstRow Then GoTo NoRange
Set rng = ws.Range(ws.Cells(FirstRow, CriteriaCol), rng)
Dim Criteria As Variant: Criteria = rng.Value
' Write values from Result Column Range to Result Array.
Set rng = rng.Offset(, ws.Columns(ResultCol).Column - rng.Column)
Dim Result As Variant: Result = rng.Value
' Modify values in Result Array.
Dim i As Long, Curr As Variant
For i = 1 To UBound(Criteria)
' Note: 'Match' is not case-sensitive i.e. A=a...
Curr = Application.Match(Criteria(i, 1), CriteriaVals, 0)
If Not IsError(Curr) Then
Result(i, 1) = ResultVal
Else ' Maybe you wanna do something here...
'Result(i, 1) = "N"
End If
Next i
' Write values from Result Array to Result Range.
rng.Value = Result
' Inform user.
MsgBox "Data transferred.", vbInformation, "Success"
' Revert Settings (not utilized in this Sub)
CleanExit:
Exit Sub
' Not As Planned
EmptyColumn:
MsgBox "Looking in an empty column to define a range with values!?", _
vbExclamation, "'" & Proc & "': Empty Column"
GoTo CleanExit
NoRange:
MsgBox "Trying to define a range with an ending row lower than " _
& "the starting row!?", _
vbExclamation, "'" & Proc & "': No Range"
GoTo CleanExit
cleanError:
MsgBox "An unexpected error occurred in '" & Proc & "'!" & vbCr _
& "Run-time error '" & Err.Number & "':" & vbCr & Err.Description, _
vbCritical, "'" & Proc & "': Unexpected Error"
On Error GoTo 0
GoTo CleanExit
End Sub
संबंधित सवाल
नए सवाल
excel
केवल एक्सेल ऑब्जेक्ट्स या फ़ाइलों, या जटिल फॉर्मूला विकास के खिलाफ प्रोग्रामिंग पर प्रश्नों के लिए। यदि आप लागू हो तो आप Excel टैग को VBA, VSTO, C #, VB.NET, PowerShell, OLE स्वचालन और अन्य प्रोग्रामिंग संबंधी टैग और प्रश्नों के साथ जोड़ सकते हैं। सुपर उपयोगकर्ता पर एकल कार्यपत्रक कार्यों के लिए एमएस एक्सेल के बारे में सामान्य सहायता उपलब्ध है।