ใน Microsoft Excel ไม่มีฟังก์ชั่นสำหรับการ List รายการโดยดูสีที่เข้าเงื่อนไข หากจะทำเช่นนั้นต้องอาศัย Add-ins เช่น Morefunc (Support Excel 2007 ลงไป) หรือ VBA เข้ามาจัดการ และเนื่องจากว่าการใช้ Morefunc ไม่ Support กับ Excel ทุกรุ่น จึงขอนำเสนอการ List ข้อมูลตามสีที่เข้าเงื่อนไขด้วย VBA ครับ
ยกตัวอย่างตามภาพด้านล่าง มีข้อมูลตัวเลขตามสีต่าง ๆ ที่ A1:G9 ของ Sheet1 ต้องการจะให้ List สีออกมาทั้งหมดโดยให้อยู่ในคอลัมน์ I และนำค่าในเซลล์ที่มีสีนั้น ๆ มาเชื่อมต่อกันในคอลัมน์ J ในชีทเดียวกัน
ภาพประกอบการนำข้อมูลมาเชื่อมต่อกันโดยดูตามสี
เราสามารถใช้ VBA เพื่อแสดงผลลัพธ์ที่ต้องการได้ตามด้านล่างครับ
ยกตัวอย่างตามภาพด้านล่าง มีข้อมูลตัวเลขตามสีต่าง ๆ ที่ A1:G9 ของ Sheet1 ต้องการจะให้ List สีออกมาทั้งหมดโดยให้อยู่ในคอลัมน์ I และนำค่าในเซลล์ที่มีสีนั้น ๆ มาเชื่อมต่อกันในคอลัมน์ J ในชีทเดียวกัน
ภาพประกอบการนำข้อมูลมาเชื่อมต่อกันโดยดูตามสี
เราสามารถใช้ VBA เพื่อแสดงผลลัพธ์ที่ต้องการได้ตามด้านล่างครับ
Sub ConcateValuesFormColor()
Dim rColor As Range, rcAll As Range
Dim r As Range, i As Integer, rc As Range
With Sheets("Sheet1")
.Range("I:J").Clear
Set rColor = .Range("A1:G9")
End With
i = 1
For Each r In rColor
Set rcAll = Sheets("Sheet1").Range(Cells(1, "I"), Cells(i, "I"))
If Application.CountIf(rcAll, r.Interior.Color) = 0 Then
Cells(i, "I") = r.Interior.Color
i = i + 1
End If
Next r
Set rcAll = rcAll.Resize(i - 1)
For Each rc In rcAll
For Each r In rColor
If r.Interior.Color = rc Then
rc.Offset(0, 1) = rc.Offset(0, 1) & r.Value & ","
End If
Next r
rc.Offset(0, 1) = Left(rc.Offset(0, 1), Len(rc.Offset(0, 1)) - 1)
rc.Interior.Color = rc.Value
rc.ClearContents
Next rc
End Sub
0 ความคิดเห็น:
แสดงความคิดเห็น