ซ่อมคอมพิวเตอร์นอกสถานที่ บางกะปิ รามคำแหง

วันพุธที่ 18 กรกฎาคม พ.ศ. 2555

การนำข้อมูลมาเชื่อมต่อกันโดยดูตามสี

ใน Microsoft Excel ไม่มีฟังก์ชั่นสำหรับการ List รายการโดยดูสีที่เข้าเงื่อนไข หากจะทำเช่นนั้นต้องอาศัย Add-ins เช่น Morefunc (Support Excel 2007 ลงไป) หรือ VBA เข้ามาจัดการ และเนื่องจากว่าการใช้ Morefunc ไม่ Support กับ Excel ทุกรุ่น จึงขอนำเสนอการ List ข้อมูลตามสีที่เข้าเงื่อนไขด้วย VBA ครับ
ยกตัวอย่างตามภาพด้านล่าง มีข้อมูลตัวเลขตามสีต่าง ๆ ที่ A1:G9 ของ Sheet1 ต้องการจะให้ List สีออกมาทั้งหมดโดยให้อยู่ในคอลัมน์ I และนำค่าในเซลล์ที่มีสีนั้น ๆ มาเชื่อมต่อกันในคอลัมน์ J ในชีทเดียวกัน
ภาพประกอบการนำข้อมูลมาเชื่อมต่อกันโดยดูตามสี
ConcateValuesByColor
เราสามารถใช้ 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 ความคิดเห็น:

แสดงความคิดเห็น