Page 1 of 1

การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Tue Jun 05, 2018 9:52 am
by tejasid
อาจารย์ครับผมได้นำวิธีที่สอนไปประยุกต์ใช้เพื่อหาค่าสรุปตามสี ปัญหาคือ กรณีที่เราใช้Conditional กำหนดสีอัตโนมัติไม่สามารถใช้วิธีที่อาจารย์แนะนำได้ ต้องประยุกต์อย่างไรครับ https://www.facebook.com/santipong.nasu ... yOTE0MTQ0/

Re: การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Tue Jun 05, 2018 3:57 pm
by parakorn
การใช้ Conditional ไม่ใช่ สี ที่สาขามารถแปลงเป็น รหัสสีได้ครับ เป็น Code ที่ถูกเขียนเพื่อแสดงสีบน Cell ต่างหาก โดยยึดจากผลลัพท์ใน Cell นั้นๆ Compare กับช่วงข้อมูลที่กำหนดครับ

ลองอธิบายสิ่งที่ต้องการมาใหม่ แล้วแนบไฟล์มาใหม่ครับ เพราะไฟล์ที่แนบมานามสกุลไม่ใช่ .xlsm จึงไม่มี Namerange ที่ชื่อ Colorname ที่สร้างขึ้นด้วย Macro4.0 ครับ เผื่อมีเพื่อนๆ จะมีแนวทางในการหาผลลัพท์ให้ครับ

Re: การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Tue Jun 05, 2018 7:12 pm
by tejasid
ผมได้แนบตัวอย่างไฟล์มาให้ใหม่เพื่อเพื่อนๆพี่ๆน้องคนไหนมีวิธีช่วยแนะนำด้วยนะครับ

Re: การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Tue Jun 05, 2018 8:21 pm
by snasui
:D Excel4Macro Function ใช้กับการระบายสีด้วยมือ ไม่สามารถใช้กับการกำหนดด้วย Conditional Formatting หากจะรวมข้อมูลตามสีด้วยการกำหนด Conditional Formatting ต้องพึ่งพาการเขียน VBA เข้ามาช่วย ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Wed Jun 06, 2018 8:02 am
by tejasid
รบกวนอาจารย์ช่วยแนะนำเพิ่มเติมด้วยครับ

Function SumByColor(CellColor As Range, rRange As Range)
Dim cSum As Long
Dim ColIndex As Integer
ColIndex = CellColor.Interior.ColorIndex
For Each cl In rRange
If cl.Interior.ColorIndex = ColIndex Then
cSum = WorksheetFunction.Sum(cl, cSum)
End If
Next cl
SumByColor = cSum
End Function

จะใช้ได้ก็ต่อเมื่อมันเป็นสีที่ระบายเองแต่ถ้าจะใช้ conditional formatting จะใช้วิธีเขียนอย่างไร

Re: การประยุกต์ สรุปตามสี กรณีที่ใช้ Conditional กำหนดอัตโนมัติได้หรือไม่

Posted: Wed Jun 06, 2018 9:10 pm
by snasui
:D ต้องใช้ Sub Procedure เข้ามาช่วยแทน Function Procedure ครับ

หากจะใช้ Function Procedure ก็จะต้องกำหนดเงื่อนไขให้เหมือนกับการกำหนด Conditional Formatting ครับ

ตัวอย่าง Function Procedure

Code: Select all

Function SumByColor(CellColor As Range, rRange As Range)
    Dim cSum As Long
    Dim ColIndex As Integer
    ColIndex = CellColor.Interior.ColorIndex
    For Each cl In rRange
      If cl.Offset(0, -3).Value = "Or" Then
        cSum = cSum + cl.Value
      End If
    Next cl
    SumByColor = cSum
End Function