2008-08-25 3 views
10

में पंक्तियों के समूह रंग मैं पंक्तियों की पृष्ठभूमि का रंग बारी से इसको अदल-एक्सेल

 
id | data for id 
    | more data for id 
id | data for id 
id | data for id 
    | more data for id 
    | even more data for id 
id | data for id 
    | more data for id 
id | data for id 
id | data for id 
    | more data for id 

की तरह एक एक्सेल स्प्रेडशीट अब मैं एक आईडी के डेटा समूह करना चाहते हैं

 
var color = white 
for each row 
    if the first cell is not empty and color is white 
     set color to green 
    if the first cell is not empty and color is green 
     set color to white 
    set background of row to color 

कर सकते हैं किसी को भी मुझे एक मैक्रो या कुछ VBA कोड के साथ मदद

धन्यवाद

उत्तर

4

मुझे लगता है कि यह वही करता है जो आप खोज रहे हैं। कॉलम ए में सेल बदलते समय रंग बदलता है। चलाता है जब तक वहाँ स्तंभ बी में कोई मूल्य नहीं है

Public Sub HighLightRows() 
    Dim i As Integer 
    i = 1 
    Dim c As Integer 
    c = 3  'red 

    Do While (Cells(i, 2) <> "") 
     If (Cells(i, 1) <> "") Then 'check for new ID 
      If c = 3 Then 
       c = 4 'green 
      Else 
       c = 3 'red 
      End If 
     End If 

     Rows(Trim(Str(i)) + ":" + Trim(Str(i))).Interior.ColorIndex = c 
     i = i + 1 
    Loop 
End Sub 
+0

प्रदान किए गए स्पष्टीकरण पर आधार मुझे गलत समझा जा सकता है, लेकिन जहां से मैं इसे देखता हूं और अपने परीक्षणों से, यह रंग रेखा से रेखा तक स्विच करता है, जब तक कॉलम ए और बी खाली नहीं हैं ... इसलिए सवाल का जवाब नहीं दे रहे हैं। लेकिन मुझे कुछ याद आ गया होगा ... –

0

आप स्थिति का चयन करते हैं स्वरूप मेनू आइटम के तहत अल स्वरूपण मेनू विकल्प, आपको एक संवाद दिया जाएगा जो आपको उस सेल पर लागू करने के लिए कुछ तर्क बनाने देता है।

आपका तर्क नहीं यह लग सकता है और अधिक की तरह है, इसके बाद के संस्करण के लिए अपने कोड के रूप में ही हो सकता है:

सेल मूल्य है | बराबर | | और | सफेद .... फिर रंग चुनें।

आप ऐड बटन का चयन कर सकते हैं और जितनी बड़ी जरूरत हो उतनी स्थिति बना सकते हैं।

1

क्या आपको कोड का उपयोग करना है? यदि तालिका स्थैतिक है, तो ऑटो स्वरूपण क्षमता का उपयोग क्यों न करें?

enter image description here

यह भी अगर आप एक ही डेटा के "सेल मर्ज" मदद मिल सकती है। तो हो सकता है कि यदि आप एक सेल में "डेटा, अधिक डेटा, और भी डेटा" की कोशिकाओं को मर्ज करते हैं, तो आप क्लासिक "प्रत्येक पंक्ति एक पंक्ति" केस से अधिक आसानी से निपट सकते हैं।

+0

यह मुझे क्या चाहिए लेकिन यह नहीं पता कि यह कैसे करना है :) –

33

मैं इस सूत्र का उपयोग एक सशर्त स्वरूपण के लिए इनपुट पाने के लिए:

=IF(B2=B1,E1,1-E1)) [content of cell E2] 

कहाँ स्तंभ बी आइटम बांटा जा करने की जरूरत है और कहा कि ई शामिल एक सहायक कॉलम है। प्रत्येक बार जब ऊपरी सेल (इस मामले पर बी 1) वर्तमान एक (बी 2) जैसा ही होता है, तो कॉलम ई की ऊपरी पंक्ति सामग्री वापस आती है। अन्यथा, यह 1 शून्य से वापस लौटाएगा (यानी, ऊपरी सेल के मूल्य के आधार पर आउटपुट 0 या 1 होगा)।

enter image description here

enter image description here

enter image description here

+6

ग्रेट उत्तर। एमओडी फ़ंक्शन के विकल्प के रूप में, आप '1 - E1' का उपयोग कर सकते हैं। तो पूर्ण सूत्र '= IF (बी 2 = बी 1, ई 1,1-ई 1) ' – Kasaku

+3

मेरे मामले में, मैं फॉर्मूला में अर्धविराम (;) का उपयोग नहीं कर सकता, केवल अल्पविराम (,) एक्सेल को स्वीकार्य है। मैं एमएस एक्सेल वी 14.0.7106.5003 32-बिट का उपयोग कर रहा हूं। – rockXrock

+1

क्या अतिरिक्त कॉलम का उपयोग करना टालना संभव है? –

1

जेसन जेड का जवाब, मेरे परीक्षण से गलत होने के लिए (कम से कम Excel 2010 पर) लगता है जो के आधार पर, यहाँ है कि काम करने के लिए होता है कोड का एक सा मेरे लिए:

Public Sub HighLightRows() 
    Dim i As Integer 
    i = 2 'start at 2, cause there's nothing to compare the first row with 
    Dim c As Integer 
    c = 2  'Color 1. Check http://dmcritchie.mvps.org/excel/colors.htm for color indexes 

    Do While (Cells(i, 1) <> "") 
     If (Cells(i, 1) <> Cells(i - 1, 1)) Then 'check for different value in cell A (index=1) 
      If c = 2 Then 
       c = 34 'color 2 
      Else 
       c = 2 'color 1 
      End If 
     End If 

     Rows(Trim(Str(i)) + ":" + Trim(Str(i))).Interior.ColorIndex = c 
     i = i + 1 
    Loop 
End Sub 
+0

मैंने मूल रूप से '08 में प्रश्न का उत्तर दिया, इसलिए अगर मुझे Office 2010 से कुछ तोड़ दिया तो यह मुझे आश्चर्य नहीं करेगा कार्यालय 2007. –

1

मैं इसे बाधित कर रहा हूं और इसे मेरे उपयोग के लिए संशोधित करने का प्रयास कर रहा हूं। मेरे पास कॉलम ए में ऑर्डर नंबर हैं और कुछ ऑर्डर कई पंक्तियां लेते हैं। सिर्फ ऑर्डर नंबर पर सफेद और ग्रे को वैकल्पिक करना चाहते हैं। मेरे पास जो कुछ है वह प्रत्येक पंक्ति को वैकल्पिक करता है।

ChangeBackgroundColor() ' ChangeBackgroundColor Macro ' ' Keyboard Shortcut: Ctrl+Shift+B Dim a As Integer a = 1 Dim c As Integer c = 15 'gray Do While (Cells(a, 2) <> "") If (Cells(a, 1) <> "") Then 'check for new ID If c = 15 Then c = 2 'white Else c = 15 'gray End If End If Rows(Trim(Str(a)) + ":" + Trim(Str(a))).Interior.ColorIndex = c a = a + 1 Loop

End Sub

0

मैं लाइट धूसर/सफ़ेद एक विन्यास स्तंभ पर आधारित के लिए Bartdude के जवाब पर फिर से काम किया है,, आरजीबी मूल्यों का उपयोग कर। मूल्य परिवर्तन होने पर एक बूलियन var फ़्लिप किया जाता है और इसका उपयोग रंग सरणी को सत्य और गलत के पूर्णांक मानों के माध्यम से अनुक्रमणित करने के लिए किया जाता है। 2010 में मेरे लिए काम करता है। शीट नंबर के साथ सब को कॉल करें।

Public Sub HighLightRows(intSheet As Integer) 
    Dim intRow As Integer: intRow = 2 ' start at 2, cause there's nothing to compare the first row with 
    Dim intCol As Integer: intCol = 1 ' define the column with changing values 
    Dim Colr1 As Boolean: Colr1 = True ' Will flip True/False; adding 2 gives 1 or 2 
    Dim lngColors(2 + True To 2 + False) As Long ' Indexes : 1 and 2 
      ' True = -1, array index 1. False = 0, array index 2. 
    lngColors(2 + False) = RGB(235, 235, 235) ' lngColors(2) = light grey 
    lngColors(2 + True) = RGB(255, 255, 255) ' lngColors(1) = white 

    Do While (Sheets(intSheet).Cells(intRow, 1) <> "") 
     'check for different value in intCol, flip the boolean if it's different 
     If (Sheets(intSheet).Cells(intRow, intCol) <> Sheets(intSheet).Cells(intRow - 1, intCol)) Then Colr1 = Not Colr1 
     Sheets(intSheet).Rows(intRow).Interior.Color = lngColors(2 + Colr1) ' one colour or the other 
     ' Optional : retain borders (these no longer show through when interior colour is changed) by specifically setting them 
     With Sheets(intSheet).Rows(intRow).Borders 
      .LineStyle = xlContinuous 
      .Weight = xlThin 
      .Color = RGB(220, 220, 220) 
     End With 
     intRow = intRow + 1 
    Loop 
End Sub 

वैकल्पिक बोनस: SQL डेटा के लिए, एक ही पीला के साथ किसी भी शून्य मान रंग के रूप में SSMS में इस्तेमाल किया

Public Sub HighLightNULLs(intSheet As Integer) 
    Dim intRow As Integer: intRow = 2 ' start at 2 to avoid the headings 
    Dim intCol As Integer 
    Dim lngColor As Long: lngColor = RGB(255, 255, 225) ' pale yellow 

    For intRow = intRow To Sheets(intSheet).UsedRange.Rows.Count 
     For intCol = 1 To Sheets(intSheet).UsedRange.Columns.Count 
      If Sheets(intSheet).Cells(intRow, intCol) = "NULL" Then Sheets(intSheet).Cells(intRow, intCol).Interior.Color = lngColor 
     Next intCol 
    Next intRow 
End Sub 
0

मैं Excel में इस नियम का उपयोग बारी पंक्तियों फ़ॉर्मेट करने के लिए:

  1. उन पंक्तियों को हाइलाइट करें जिन्हें आप वैकल्पिक शैली को लागू करना चाहते हैं।
  2. प्रेस "सशर्त स्वरूपण" -> नया नियम
  3. चुनें (अंतिम प्रविष्टि)
  4. प्रारूप मूल्य में नियम दर्ज करें "निर्धारित करने के लिए जो कोशिकाओं को स्वरूपित करने के लिए एक सूत्र का उपयोग": =MOD(ROW(),2)=0
  5. प्रेस "प्रारूप" , वैकल्पिक पंक्तियों के लिए आवश्यक स्वरूपण करें, उदाहरण के लिए। भरें -> रंग।
  6. ठीक दबाएं, ठीक दबाएं।

आप के बजाय बारी कॉलम फ़ॉर्मेट करने के लिए चाहते हैं, तो =MOD(COLUMN(),2)=0

देखा का उपयोग करें!

+0

हाय आप वैकल्पिक पंक्ति रंग का जवाब देते हैं, सवाल डेटा के रंग समूह को नहीं चाहते हैं .. – ozmike

संबंधित मुद्दे