मैं एक प्रोजेक्ट पर काम कर रहा हूं जिसमें मैं कॉलम डी की तुलना शीट के कॉलम सी ("बैकएंड") से कर रहा हूं और अंतर कॉलम ई (% में) में दिखाया गया है। मैं लाल रंग में% अंतर (स्तंभ ई) को हाइलाइट करना चाहता हूं, जहां अंतर -10.00% से कम और 10.00% से अधिक है। फिर उन वस्तुओं को कॉलम बी से प्रत्येक हाइलाइट किए गए सेल से कॉपी करना चाहते हैं और इसे सेल ए 7 के नीचे शीट ("अपडेटर") में पेस्ट करना चाहते हैं।

आपके संदर्भ के लिए स्क्रीनशॉट संलग्न है

enter image description here

Sub check_date()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim wsData As Worksheet, Datasht As Worksheet, lRow As Integer


Set wsData = Sheets("UPDATER")
Set Datasht = Sheets("Backend")
lRow = Datasht.Cells(Rows.Count, 13).End(xlUp).Row


wsData.Range("M8:M" & lRow).Interior.ColorIndex = xlNone
wsData.Range("M8:M" & lRow).FormatConditions.Add Type:=xlExpression, Formula1:="=AND(M8>=EOMONTH(TODAY(),-2)+1,M8<EOMONTH(TODAY(),-1))"
wsData.Range("M8:M" & lRow).FormatConditions(wsData.Range("M8:M" & lRow).FormatConditions.Count).SetFirstPriority
 With wsData.Range("M8:M" & lRow).FormatConditions(1).Interior
 .Color = RGB(255, 255, 0)
 .TintAndShade = 0
 End With
 wsData.Range("M8:M" & lRow).FormatConditions(1).StopIfTrue = False
 Range("M8").Select

End Sub
0
Naina 5 सितंबर 2020, 20:52

1 उत्तर

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

यहाँ मुझे क्या मिला है। यह थोड़ा बहुत बड़ा बदलाव है, लेकिन मैं उम्मीद कर रहा हूं कि वास्तव में आप यही चाहते हैं।

Sub formatcondition()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim wsData As Worksheet, Datasht As Worksheet, lRow As Integer, My_Range As Range, i As Integer, iRow As Integer, cell As Variant, RowNum As Long, lRowUpdater As Long

Set wsData = Sheets("UPDATER")
Set Datasht = Sheets("Backend")
lRow = Datasht.Cells(Rows.Count, 5).End(xlUp).Row
lRowUpdater = wsData.Cells(Rows.Count, 1).End(xlUp).Row
RowNum = 8 'setting the first row in the UPDATER sheet


Datasht.Range("E1:E" & lRow).Interior.ColorIndex = xlNone 'Reset the color before running
wsData.Range("A8:D" & lRowUpdater + 8).ClearContents 'clear your updater sheet. Remove if not needed.

For i = 1 To lRow
    On Error GoTo Continue
    If Datasht.Range("E" & i).Value < -0.1 Or Datasht.Range("E" & i).Value > 0.1 Then 'If greater than or less than
        Datasht.Range("E" & i).Interior.ColorIndex = 6 'Change the color of affected cells if you need that
        wsData.Range(wsData.Cells(RowNum, 1), wsData.Cells(RowNum, 4)).Value = _
        Datasht.Range(Datasht.Cells(i, 2), Datasht.Cells(i, 5)).Value 'straight copy the values from the cells as it loops rather than using copy/paste
        wsData.Range(wsData.Cells(RowNum, 2), wsData.Cells(RowNum, 4)).NumberFormat = "0.00%" 'change the number format of outputted cells to percentages (if needed)
        RowNum = RowNum + 1 'move to the next row in the output
    End If
Continue:
Resume Nexti
Nexti:
Next i

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

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

एक वर्ष जोड़ने की तिथि के लिए मेरा संस्करण सिर्फ वही होगा जो मैंने पहले दिया था। इसके बजाय अब हम OR को शामिल करने के लिए एक AND फ़ंक्शन जोड़ते हैं, फिर जांचते हैं कि सेल में YEAR चालू वर्ष है या नहीं। यदि आप केवल इस वर्ष को चाहते हैं तो हम IF स्टेटमेंट को भी छोड़ सकते हैं जो जाँच कर रहा था कि यदि चालू माह जनवरी है तो इसमें दिसंबर शामिल होगा। लेकिन अगर इसकी जरूरत नहीं है तो:

=AND(OR(MONTH(NOW())=MONTH(M8),MONTH(NOW())-1=MONTH(M8)),YEAR(M8)=YEAR(NOW()))

या

=AND(MONTH(M8)>=MONTH(NOW())-1,MONTH(M8)<MONTH(NOW())+1,YEAR(M8)=YEAR(NOW()))

दोनों एक ही लंबाई और एक ही काम को अलग-अलग तरीके से करते हैं।

1
Simon 12 सितंबर 2020, 11:20