Page 1 of 1

ต้องการสร้างเงื่อนไขให้ค่าตัวเลข ที่มากหรือน้อยเกินไป แสดงออกมา

Posted: Tue Feb 25, 2020 3:50 pm
by nuttanan2140
ผมอยากสร้าง condition formating ใน vba ให้สามารถหาได้ว่าค่าตัวไหนที่มัน มีค่ามากหรือน้อยเกิน 70% ของค่าเฉลี่ยในแต่ละงานย่อย(cloumn) โดยเมื่อกดปุ่มคำนวณ โค้ดจะคำนวณค่าตามปกติ หลังจากนั้นอยากให้ตัวเลขแต่ละนั้นแสดงเป็นสีแดง หรือcells นั้นเป็นสีแดงก็ได้ เมื่อค่านั้นมีค่าตามเงื่อนไข(มีค่ามากหรือน้อยเกิน 70% ของค่าเฉลี่ยในแต่ละงานย่อย(cloumn)) ขอบคุณล่วงหน้าครับ :D

Code: Select all

Sub StandardTime_Button1_Click()
' ปุ่มคำนวนค่าเวลาปกติ
Dim i As Long
Dim xbar(300), rating As Double
Dim normal(300), normalmax As Double

Dim orange As Range
Dim oformat As FormatCondition


For i = 1 To Val(Range("B2"))
   If ThisWorkbook.Sheets("Standard Time").Cells(2, i + 5) <> "" Then
      'ส่วนการคำนวณ
      xbar(i) = Application.WorksheetFunction.Average(Range(Cells(3, i + 5), Cells(3, i + 5).End(xlDown)))
      rating = Val(Range("B3")) / 100
      normal(i) = rating * xbar(i)
     
       normalmax = Application.WorksheetFunction.Max(normal)
   Else
      Exit Sub
   End If
'   ส่วนที่คัดกรองค่า
   Set orange = Range(Cells(3, i + 5), Cells(3, i + 5).End(xlDown))
   Set oformat = orange.FormatConditions.Add(xlAboveAverageCondition, xlFormula)
   oformat.Font.Color = RGB(250, 0, 0)
Next i
ThisWorkbook.Sheets("Standard Time").Range("B4") = normalmax
End Sub
*อันนี้คือโค้ดที่ผมพยายามทำ แต่มันเตือน type mismatch ขึ้นมา

Re: ต้องการสร้างเงื่อนไขให้ค่าตัวเลข ที่มากหรือน้อยเกินไป แสดงออกมา

Posted: Tue Feb 25, 2020 7:53 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

สมมุติว่า xbar(i) คือค่าเฉลี่ยที่ต้องการนำมาเปรียบเทียบ

Code: Select all

'Other code
Set orange = Range(Cells(3, i + 5), Cells(3, i + 5).End(xlDown))
Set oformat = orange.FormatConditions.Add(xlCellValue, xlNotEqual, xbar(i))
oformat.Font.Color = RGB(250, 0, 0)
'Other code

Re: ต้องการสร้างเงื่อนไขให้ค่าตัวเลข ที่มากหรือน้อยเกินไป แสดงออกมา

Posted: Wed Feb 26, 2020 12:24 am
by nuttanan2140
ขอบคุณมากๆนะครับ ตอนนี้มันแสดงผลได้แล้วครับ แต่ดูเหมือนว่าไม่ใช้ได้กับทุกcolumn ได้แค่columnแรกอ่ะคับ ละก้ถ้าสมมุติว่าผมอยากให้เลขที่มันมากเกิน หรือน้อยเกินเป็นตัวสีแดงแทนมันจะสลับยังไงหรอครับ :D เดี๋ยวผมส่งไฟล์ให้ดูนะครับว่ามันเป็นลักษณะยังไง
แล้วก็ถ้สมมุติว่าผมใส่ตรง xlnotequal เป็น xlbetween จะต้องใส่ค่ายังไงหรอคับถึงจะถูกต้อง ขอบคุณครับ

Code: Select all

   
   Set orange = Range(Cells(3, i + 5), Cells(3, i + 5).End(xlDown))
   Set oformat = orange.FormatConditions.Add(xlCellValue, xlBetween, xbar(i))
   oformat.Font.Color = RGB(250, 0, 0)

Re: ต้องการสร้างเงื่อนไขให้ค่าตัวเลข ที่มากหรือน้อยเกินไป แสดงออกมา

Posted: Wed Feb 26, 2020 6:41 am
by snasui
:D แก้ Statement ให้สอดคล้องกับเงื่อนไขที่จะใช้ด้วยครับ

xlBetween คือระหว่าง แต่ xbar(i) คือค่าเดี่ยว การกำหนดเช่นนี้ย่อมไม่สอดคล้องกันครับ

Re: ต้องการสร้างเงื่อนไขให้ค่าตัวเลข ที่มากหรือน้อยเกินไป แสดงออกมา

Posted: Wed Feb 26, 2020 11:50 pm
by nuttanan2140
:D :D ได้แล้วครับ ขอบคุณครับผม