กระทู้เก่าบอร์ด อ.Yeadram
3,345 12
URL.หัวข้อ /
URL
จะตัดเบอร์โทร แต่ text มัน ติดๆกัน มีวิธีไหมครับ
ตัวอย่างเช่น
035314020E3482,847169813
027363462,812075018,882256890
028662830E131,82007168
2904240747,831786090,027124777
ถ้าผมทำใน Excel text to col จะตัด Comma จัด Format text
จะได้ผลลัพท์ แบบนี้
โดยที่ ปกติแล้ว เบอบ้านผมจะตัดออกเอง กับ เบอร์ที่ ไม่ครบ 10หลัก จะตัดออก
ให้เหลือเบอร์ มือถือไว้ (ผมกรอกออก)
ในexcel ผมจะได้ 3 ฟิว
0904240747 0831786090 027124777
027363462 0812075018 0882256890
028662830E131 082007168
02904240747 0831786090 027124777
ถ้าผมอยากใส่ใน Access ต้องเขียน สูตรประมาณไหนอะครับ ตัดยังไงอะครับ
035314020E3482,847169813
027363462,812075018,882256890
028662830E131,82007168
2904240747,831786090,027124777
ถ้าผมทำใน Excel text to col จะตัด Comma จัด Format text
จะได้ผลลัพท์ แบบนี้
โดยที่ ปกติแล้ว เบอบ้านผมจะตัดออกเอง กับ เบอร์ที่ ไม่ครบ 10หลัก จะตัดออก
ให้เหลือเบอร์ มือถือไว้ (ผมกรอกออก)
ในexcel ผมจะได้ 3 ฟิว
0904240747 0831786090 027124777
027363462 0812075018 0882256890
028662830E131 082007168
02904240747 0831786090 027124777
ถ้าผมอยากใส่ใน Access ต้องเขียน สูตรประมาณไหนอะครับ ตัดยังไงอะครับ
12 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19222
แต่หากจะกรองเเฉพาะ 10 ตัวเท่านั้นก็เขียนฟังก์ชั่นประมาณนี้
Function Split10(iWord As String, strSplit As String, N As Integer) As String
Dim aryWords() As String
Dim i As Integer
Dim iCount As Integer
If Not IsNull(iWord) Then
aryWords = Split(iWord, strSplit)
For i = 0 To UBound(aryWords)
If Len(aryWords(i)) = 10 Then
If iCount = N Then
Split10 = CutWord & aryWords(i)
Exit Function
End If
iCount = iCount + 1
End If
Next i
End If
End Function
สมมุติข้อมูลคือ 123456789,1234567890,1234567,0987654321
การใช้งานคิวรี่
ฟิลด์1: Split10("123456789,1234567890,1234567,0987654321", ",", 0) = "1234567890"
ฟิลด์2: Split10("123456789,1234567890,1234567,0987654321", ",", 1) = "0987654321"
ฟิลด์3: Split10("123456789,1234567890,1234567,0987654321", ",", 2) = ""
ฟังก์ชั่นจะนับกลุ่มแรกที่ครบ 10 หลัก เป็นฟิลด์แรก และที่ครบ 10 หลักถัดมาเป็นฟิลด์ 2 และถ้าไม่มีก็จะเป็นค่าว่าง
ปรับใช้ดูครับ
ปล. ฟังก์ชั่นเพิ่งเขียนอาจผิดพลาดได้ แต่แนวคิดประมาณนี้ครับ
Function Split10(iWord As String, strSplit As String, N As Integer) As String
Dim aryWords() As String
Dim i As Integer
Dim iCount As Integer
If Not IsNull(iWord) Then
aryWords = Split(iWord, strSplit)
For i = 0 To UBound(aryWords)
If Len(aryWords(i)) = 10 Then
If iCount = N Then
Split10 = CutWord & aryWords(i)
Exit Function
End If
iCount = iCount + 1
End If
Next i
End If
End Function
สมมุติข้อมูลคือ 123456789,1234567890,1234567,0987654321
การใช้งานคิวรี่
ฟิลด์1: Split10("123456789,1234567890,1234567,0987654321", ",", 0) = "1234567890"
ฟิลด์2: Split10("123456789,1234567890,1234567,0987654321", ",", 1) = "0987654321"
ฟิลด์3: Split10("123456789,1234567890,1234567,0987654321", ",", 2) = ""
ฟังก์ชั่นจะนับกลุ่มแรกที่ครบ 10 หลัก เป็นฟิลด์แรก และที่ครบ 10 หลักถัดมาเป็นฟิลด์ 2 และถ้าไม่มีก็จะเป็นค่าว่าง
ปรับใช้ดูครับ
ปล. ฟังก์ชั่นเพิ่งเขียนอาจผิดพลาดได้ แต่แนวคิดประมาณนี้ครับ
3 @R19225
ผม ใส่ Function Split10 ใน โมดูล แล้วครับ
ทีนี้ ใน qry ผมมีฟิว telno ต้องใส่แบบนี้ หรือเปล่าครับ
tel1: Split10([TELNO],",",0)
tel2: Split10([TELNO],",",1)
tel3: Split10([TELNO],",",2)
ขึ้นว่างๆอะงับ หรือผมทำอะไรผิดรบกวน ทีนะครับ ผมอาจจะไม่ค่อยชำนาญ
ขอบคุณครับ คุณ TTT
ทีนี้ ใน qry ผมมีฟิว telno ต้องใส่แบบนี้ หรือเปล่าครับ
tel1: Split10([TELNO],",",0)
tel2: Split10([TELNO],",",1)
tel3: Split10([TELNO],",",2)
ขึ้นว่างๆอะงับ หรือผมทำอะไรผิดรบกวน ทีนะครับ ผมอาจจะไม่ค่อยชำนาญ
ขอบคุณครับ คุณ TTT
4 @R19228
ผมจะใส่ใน qry ประมาณนี้อะครับ
ขอบคุณมากๆครับ
ขอบคุณมากๆครับ
5 @R19229
จากรูปมันไม่มีกลุ่มตัวเลขไหนครบ 10 หลักเลยหนิครับ ถ้าอยากได้ 9 หลักก็แก้ใน ฟังก์ชั่น = 10 เป็น = 9 ครับ
โหลดไฟล์ตัวอย่างไปดูก็ได้ครับ ที่นี่ครับ
http://bit.ly/Split10byTTT
โหลดไฟล์ตัวอย่างไปดูก็ได้ครับ ที่นี่ครับ
http://bit.ly/Split10byTTT
6 @R19230
ได้แล้วครับขอโทษทีครับ 9หลัก ^_^
แต่ ตอนนี้ น่าจะเหลือ ช่วงที่ ไมไ่ด้ คั่นด้วย comma กับ ข้างหลัง ว่างไปเลย ก็จะไม่ตัดให้
แต่ ตอนนี้ น่าจะเหลือ ช่วงที่ ไมไ่ด้ คั่นด้วย comma กับ ข้างหลัง ว่างไปเลย ก็จะไม่ตัดให้
7 @R19234
ตัดให้นะครับ ดูว่าใส่คำสั่งอะไรผิดหรือป่าว ยังไงลองโหลดไฟล์ตัวอย่างที่ผมโพสให้ไปดูได้นะครับ ข้อมูลสุดท้ายมันก็ขึ้นให้ไม่ต้องใส่ ,
8 @R19246
ได้แล้วครับ ขึ้น 3 ช่องแล้วครับ
แต่ ขอถามเพิ่มอีกนิดนะครับ
856690539,899978883Eระงับ
023320133,830811364Eทุก10
854612057EN,850178941EN
สังเกตุว่า ถ้ามีตัวอักษร หรือภาษาEng ต่อท้ายตัวเลข มัน จะไม่ มาด้วย อะครับ
ถ้าอยากให้มัน มาด้วย พอจะมีวิธีไหมครับ
Ex.
856690539,899978883
023320133,830811364
854612057,850178941
ขอบพระคุณมากเลยครับ
แต่ ขอถามเพิ่มอีกนิดนะครับ
856690539,899978883Eระงับ
023320133,830811364Eทุก10
854612057EN,850178941EN
สังเกตุว่า ถ้ามีตัวอักษร หรือภาษาEng ต่อท้ายตัวเลข มัน จะไม่ มาด้วย อะครับ
ถ้าอยากให้มัน มาด้วย พอจะมีวิธีไหมครับ
Ex.
856690539,899978883
023320133,830811364
854612057,850178941
ขอบพระคุณมากเลยครับ
9 @R19253
เปลี่ยนบรรทัด
If Len(aryWords(i)) = 9 Then
เป็น
If Len(aryWords(i)) > 9 Then
ลองดูครับ
If Len(aryWords(i)) = 9 Then
เป็น
If Len(aryWords(i)) > 9 Then
ลองดูครับ
10 @R19256
แก้ไขครับ
เปลี่ยนบรรทัด
If Len(aryWords(i)) = 9 Then
เป็น
If Len(aryWords(i)) > 8 Then
ลองดูครับ
เริ่มง่วงละ 555
เปลี่ยนบรรทัด
If Len(aryWords(i)) = 9 Then
เป็น
If Len(aryWords(i)) > 8 Then
ลองดูครับ
เริ่มง่วงละ 555
11 @R19257
เสริมอีกนิด ลองเปลี่ยนเป็นฟังก์ชั่นนี้ดู คือจะตัดคำหากเกิน 9 ตัว และหากเป็นตัวหนังสือก็จะตัดออกด้วย
Function Split9(iWord As String, strSplit As String, N As Integer) As String
Dim aryWords() As String
Dim i As Integer, ii As Integer
Dim iCount As Integer
Dim Cutword As String
If Not IsNull(iWord) Then
aryWords = Split(iWord, strSplit)
For i = 0 To UBound(aryWords)
If Len(aryWords(i)) > 8 Then
If iCount = N Then
For ii = 1 To Len(aryWords(i))
If IsNumeric(Mid(aryWords(i), ii, 1)) Then
Cutword = Cutword & Mid(aryWords(i), ii, 1)
If Len(Cutword) = 9 Then Exit For
Else
Cutword = ""
Exit For
End If
Next ii
Split9 = Cutword
Exit Function
End If
iCount = iCount + 1
End If
Next i
End If
End Function
ปรับใช้ดุครับ
Function Split9(iWord As String, strSplit As String, N As Integer) As String
Dim aryWords() As String
Dim i As Integer, ii As Integer
Dim iCount As Integer
Dim Cutword As String
If Not IsNull(iWord) Then
aryWords = Split(iWord, strSplit)
For i = 0 To UBound(aryWords)
If Len(aryWords(i)) > 8 Then
If iCount = N Then
For ii = 1 To Len(aryWords(i))
If IsNumeric(Mid(aryWords(i), ii, 1)) Then
Cutword = Cutword & Mid(aryWords(i), ii, 1)
If Len(Cutword) = 9 Then Exit For
Else
Cutword = ""
Exit For
End If
Next ii
Split9 = Cutword
Exit Function
End If
iCount = iCount + 1
End If
Next i
End If
End Function
ปรับใช้ดุครับ
12 @R19265
ขอบคุณมากเลยครับ
ได้ข้อมูลที่ต้องการใช้เรียบร้อย ผมไปต่อเติม เสริม นิดหน่อย เอาเบอร์ เสีย ออก
ขอบคุณคุณ TTT มากเลยครับ ผู้เชี่ยวชาญมากกก ๆ
ได้ข้อมูลที่ต้องการใช้เรียบร้อย ผมไปต่อเติม เสริม นิดหน่อย เอาเบอร์ เสีย ออก
ขอบคุณคุณ TTT มากเลยครับ ผู้เชี่ยวชาญมากกก ๆ
Time: 0.3767s
Split("2904240747,831786090,027124777", ",")(0) = 2904240747
Split("2904240747,831786090,027124777", ",")(1) = 831786090
Split("2904240747,831786090,027124777", ",")(2) = 027124777
แต่ถ้าคุณจะคัดเอาเฉพาะ 10 หลักด้วยก็ต้องใช้การเขียนฟังก์ชั่นหรือเงื่อนไขช่วยด้วย โดยใช้ Len() นับจำนวนตัวอักษร