เวบถาม-ตอบปัญหา Excel http://www.snasui.com/
Group Blog
 
<<
มิถุนายน 2554
 
 1234
567891011
12131415161718
19202122232425
2627282930 
 
30 มิถุนายน 2554
 
All Blogs
 
การเติมค่าที่คีย์เป็นช่วงให้แสดงทุกรายการด้วย VBA

กรณีที่มีการคีย์ค่าเป็นช่วงแล้วต้องการให้แสดงทุกรายการในช่วงนั้น ๆ คงต้องพึ่งพา VBA ในการจัดการครับ ยกตัวอย่างเช่น ตามภาพด้านล่าง ค่าในช่วง A2:A5 จะมีการคีย์แบบช่วง และที่ B2:B5 คือตัวอย่างผลลัพธ์ที่ต้องการ


ภาพประกอบค่าที่คีย์เป็นช่วงและผลลัพธ์ที่ต้องการ


Interval
ซึ่งสามารถใช้ Code VBA ตามด้านล่างครับ
Function StringArray(t As String) As String()
    StringArray = Split(t, ",")
End Function

Sub SplitThenJoin()
Dim s As String, a() As String
Dim r As Range, rAll As Range
Dim i As Integer, j As Integer, k As Integer
With Worksheets("Sheet1")
    Set rAll = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With
For Each r In rAll
    a = StringArray(r.Value)
    For i = 0 To UBound(a)
        j = InStr(1, a(i), "-")
        If IsNumeric(Left(a(i), 1)) And j > 0 Then
            For k = Left(a(i), j - 1) To Mid(a(i), j + 1, 255)
                s = s & k & ","
            Next k
        ElseIf j > 0 Then
            For k = Asc(Left(a(i), j - 1)) To Asc(Mid(a(i), j + 1, 255))
                s = s & Chr(k) & ","
            Next k
        End If
        If Len(s) > 1 Then
            a(i) = Left(s, Len(s) - 1)
        Else
            a(i) = a(i)
        End If
        s = ""
    Next i
    r = Join(a, ",")
Next r
End Sub

โดยมีแนวคิดคือ
1. นำค่าในแต่ละเซลล์ไปแบ่งให้เป็น Array โดยใช้เครื่องหมายคอมม่า (,) จากนั้นก็จะ Loop เพื่อว่าจากสมาชิก Array ที่ได้มีค่าใดประกอบด้วยเครื่องหมาย - ก็จะนำไปประมวลต่อโดยหาว่าหากด้วยหน้าเครื่องหมาย - เป็นตัวเลขก็จะทำการเปลี่ยนค่าของสมาชิก Array นั้นเสียใหม่ เริ่มด้วยค่าที่อยู่หน้าเครื่องหมาย - แล้วบวกเข้าไปครั้งละ 1 จากนั้นคั่นด้วยเครื่องหมายคอมม่าจนได้ค่าสุดท้ายเท่ากับตัวเลขหลังเครื่องหมาย -
2. หากด้านหน้าเครื่องหมาย - เป็นตัวอักษรก็จะหาว่ารหัสตัวอักษร (Character Code) นั้นคือค่าใดและทำการบวกรหัสนั้นไปครั้งละ 1 จากนั้นคั่นด้วยเครื่องหมายคอมม่า จนกระทั่งเท่ากับรหัสของตัวอักษรสุดท้ายหลังเครื่องหมาย -
3. กรณีที่สมาชิก Array ไม่มีเครื่องหมาย - ก็ให้มีค่าเท่าเดิม
สำหรับสมาชิกของ //www.snasui.com/ สามารถดาวน์โหลดไฟล์ตัวอย่างได้ที่นี่ครับ การแปลง Format ข้อมูล


Create Date : 30 มิถุนายน 2554
Last Update : 10 กุมภาพันธ์ 2556 19:34:41 น. 0 comments
Counter : 919 Pageviews.

คนควน
Location :
สงขลา Thailand

[ดู Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 27 คน [?]





MVP Excel



MOS Expert in Excel 2003
MOS Specialist in Excel 2003



คนควน เป็นคน อ.สะเดา จ.สงขลา จบการศึกษาทางด้านการบัญชีระดับปริญญาตรีและปริญญาโท จากมหาวิทยาลัยรามคำแหง มีความถนัดหลายด้าน ทั้งเรื่อง ศิลปะ ดนตรี กีฬา คอมพิวเตอร์ จากการที่ได้คลุกคลีกับโปรแกรมชุด Microsoft Office จึงได้เรียนรู้เกี่ยวกับเทคนิคการใช้งานต่าง ๆ โดยเฉพาะ Excel จะมีความถนัดเป็นพิเศษ เนื่องจากใช้เป็นส่วนใหญ่ในการทำงานประจำวัน ได้รับ MOS Cetificate (Microsoft Office Specialist) ทั้ง Specialist และ Expert อีกทั้งเป็นคนชอบศึกษาค้นคว้าทดลองและชอบแบ่งปัน จึงได้เขียน Blog เพื่อเผยแพร่เทคนิคการใช้งาน Excel เพื่อประโยชน์แก่ผู้สนใจจะได้มีแหล่งศึกษา นำไปประยุกต์ใช้ให้เกิดประโยชน์สูงสุดกับงานของตนเองต่อไป












เมื่อวันที่ 24 ม.ค. 2553 ได้เปิด Forum เพื่อถาม-ตอบปัญหาเกี่ยวกับ Excel ทั้งเป็นแหล่งศึกษาให้กับผู้สนใจทั่วไป สามารถคลิกภาพด้านบนเพื่อไปยัง Forum ได้ครับ



ข้อความหรือรูปภาพที่ปรากฏในกระทู้ที่ท่านเห็นอยู่นี้ เกิดจากการตั้งกระทู้และถูกส่งขึ้นกระดานข่าวโดยอัตโนมัติจากบุคคลทั่วไป ซึ่ง เจ้าของ Blog มิได้มีส่วนร่วมรู้เห็น ตรวจสอบ หรือพิสูจน์ข้อเท็จจริงใด ๆ ทั้งไม่ร่วมรับผิดชอบต่อความคิดเห็นของบุคคลใด ๆ ทั้งสิ้น


Statistics Hits
New Comments
Friends' blogs
[Add คนควน's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.