:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#1

Post by kchn_deaw »

เรียน เพื่อนสมาชิก

ขอความช่วยเหลือค่ะ เนื่องจากว่า มีชุดข้อมูลอยู่ชุดหนึ่ง เป็นรูปแบบตัวเลขที่มีหลัก หรือ Digit ไม่เท่ากัน ต้องการทำให้เท่ากัน เพื่อใช้ข้อมูลในบางตำแหน่งไปลิงค์กับข้อมูลอื่นต่อไป ดังนี้ค่ะ

ชุดข้อมูลที่ได้มาจากการผลิตสินค้าใน 1 กะ มีการระบุ
Codeผลผลิต/เบอร์กล่อง/ปี/เดือน/วัน/ชม./นาที/วินาที ออกมาเป็นชุดตัวเลข ดังนี้

212020152295500
214120152914513
212320152652041
21372015212133900
1728201532185440
185201532183715
1827201532191730

ซึ่ง ถ้าอ่านจากชุดตัวเลขดังกล่าวก็จะพอเดาได้ว่า ตัวเลขส่วนหน้าก่อนที่จะเป็น 2015 คือชุดข้อมูล Codeผลผลิต และ เบอร์กล่อง
ถัดจากนั้นก็จะเป็น ปี/เดือน/วัน (เพราะมันเท่ากับ 2015 หมด เลยจับได้ว่าอย.ู่ตำแหน่งไหน) ปัญหาของช่วงนี้คือ บางเดือน มี 1 หลัก บางเดือนมี 2 หลัก ตัวเลขจึงไม่เท่ากัน และ วันที่ บางวันมี 1 หลัก บางวัน มี 2หลัก ตัวเลขจึงไม่เท่ากัน
ถัดจาก ปี/เดือน/วัน ก็จะเป็นเวลาโดยออกมาเป็นตัวเลขติดๆกันที่แสดงถึง ชม./นาที/วินาที *****อันนี้ยิ่งหลักไม่เท่ากัน ใหญ่เลย****

หากต้องการแบ่งชุดตัวเลขนี้ ให้อยู่ในรูปแบบ

ชุดข้อมูลต้นฉบับ 21332015212142000
แบ่งได้ดังนี้ 21|33|2015|2|12|14|20|00

ต้องการผลลัพธ์ 20 Digit เสมอ XX|XXXX|YYYY|mm|dd|hh|mm|ss
ผลลัพธ์จึงออกมาเป็น 21003320150212142000

โดยในขณะนี้ ทำได้เพียงการทำให้ได้ 20 Digit จากการเติม 0 เข้าไปข้างหน้า ด้วยสูร len
เช่น ที่ O4777 มีข้อมูล 21332015212142000

=IF(LEN($O4777)=11,"0000000"&O4777,IF(LEN($O4777)=12,"000000"&O4777,IF(LEN($O4777)=13,"00000"&O4777,IF(LEN($O4777)=14,"0000"&O4777,IF(LEN($O4777)=15,"000"&O4777,IF(LEN($O4777)=16,"00"&O4777,IF(LEN($O4777)=17,"0"&$O4777,IF(LEN($O4777)=18,$O4777))))))))

ก็จะได้ผลลัพธ์ = 021332015212142000 :ซึ่งยังไม่ใช่ข้อมูลที่ถูกต้อง

จึงอยากรบกวนขอคำแนะนำการใช้สูตรเพื่อให้ได้ผลลัพธ์ ที่ต้องการหน่อยค่ะ

ขอบคุณค่ะ :P
test.jpg
ปล.พยายามแนบไฟล์อยู่ แต่มันฟ้องว่าไฟล์ใหญ่ไป ทั้งที่มีข้อมูลแค่ 721k เองน้า เลยอธิบายเอา
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#2

Post by DhitiBank »

ขนาดไฟล์ที่แนบไม่เกิน 300 kb ครับ :)

ข้อสงสัยนะครับ
1. ตัวเลขชุดด้านหน้าก่อนถึงปี ค.ศ. หากมี 4 หลักก็ไม่มีปัญหา แต่ถ้ามี 3 หลัก เช่น 1822015 จะต้องใส่ 0 อย่างไรครับ?
2. ตัวเลขชุดหน้าจนถึงปี ค.ศ. จะมีโอกาสเป็น 20152015 บ้างไหมครับ?
3. ตัวเลข 4 ตัวท้ายในข้อมูลดิบ เป็น mmss เสมอหรือเปล่าครับ หรือว่าถ้านาทีอยู่ในช่วง 1-9 ก็จะแสดงหลักเดียวเป็น mss เพราะเท่าที่ดูหลักวินาทีจะแสดงสองหลักตลอด
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#3

Post by menem »

ข้อมูลตัวนี้ มีอะไรผิดพลาดไหมครับ ?
212020152295500
เพราะตัดแล้ว วันที่ 20150229 ไม่มีในของจริง (มันจะต้องเป็น 20150301)

ผลการตัดที่ผมได้นะครับ (ยังไม่แยก code ผลผลิต/เบอร์กล่อง)
21202015029055000
21412015029014513
21232015026052041
21372015022133900
17282015032185440
01852015032183715
18272015032191730
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#4

Post by menem »

ขอโทษด้วยครับ ลงค่าผลลัพธ์ผิด
212020150229055000
214120150209014513
212320150206052041
213720150212133900
172820150302185440
018520150302183715
182720150302191730
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#5

Post by DhitiBank »

มีข้อสงสัยเพิ่มเติมครับ
จากตัวอย่างรูปที่คุณให้มา (เล็กและเบลอมาก :shock: ) มีตัวอย่างรหัสคือ
1:: 13252015210195900 --> 13002520150210195900
2:: 1372015210183950 --> 13000720150210183950
3:: 7222015219194820 --> 07002220150219194820
4:: 1325201521011300 --> 13002520150210113000
5:: 71201521711545 --> 07000120150217115450

(ที่จริงมี 7 ตัวอย่าง แต่รูปแบบซ้ำกันแล้ว เลยยกมาแค่นี้) เกิดข้อสงสัยครับเพราะรู้สึกว่าการแปลงรหัสที่ 4-5 ไม่สอดคล้องกับรหัส 1-3 เพราะสังเกตว่า "วินาที" ในรหัสที่ 1-3 แม้จะลงท้ายด้วย 0 ก็ยังแสดงให้ครบถ้วนโดยไม่ตัดทิ้ง จาก 3 รหัสนี้สรุปได้ว่า 2 ตำแหน่งที่อยู่ทางขวาสุดต้องเป็น "วินาที" แน่นอน แต่พอมาถึงรหัสที่ 4-5 ตำแหน่ง 2 ตัวท้ายที่น่าจะเป็นวินาทีกลับไม่ใช่
(ตามความรู้สึก รหัส 4 น่าจะเป็น 13|0025|2015|02|10|01|13|00 หรือ 13|0025|2015|02|10|11|03|00
รหัส 5 น่าจะเป็น 07|0001|2015|02|17|01|15|45 หรือ 07|0001|2015|02|17|11|05|45)

จึงอยากถามเพิ่มเติมว่า
1. หากเลข 4 ตัวท้าย ไม่ใช่ mmss ตายตัวแล้ว จะมีวิธีตัดสินใจอย่างไรว่าหลักไหนเป็นนาที วินาที
2. นอกจากปี ที่มีจำนวน 4 หลักตายตัว มีตำแหน่งไหนอีกไหมที่มีจำนวนหลักเท่าเดิมเสมอ (ผมเดาว่าไม่มี ถ้า 4 ตัวท้ายไม่ใช่ mmss ถ้าหากเป็นแบบนี้ผมว่ายากมากเลยนะครับ ที่จะเขียนสูตรให้ครอบคลุมทุกกรณี แต่อาจารย์หรือเพื่อนๆ ท่านอื่นอาจมีวิธีครับ)
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#6

Post by kchn_deaw »

ตอบคุณ DhitiBank

1. ตัวเลขชุดด้านหน้าก่อนถึงปี ค.ศ. หากมี 4 หลักก็ไม่มีปัญหา แต่ถ้ามี 3 หลัก เช่น 1822015 จะต้องใส่ 0 อย่างไรครับ?
ตอบ: ต้องการเติม 0 ให้ครบ 4 หลัก ถูกต้องค่ะ ดังนั้นหากเป็น 1822015 ก็จะเป็น 01822015 ค่ะ
2. ตัวเลขชุดหน้าจนถึงปี ค.ศ. จะมีโอกาสเป็น 20152015 บ้างไหมครับ?
ตอบ: มีค่ะ นั่นคือที่กลัว!! เมื่อ Running number รันถึง 2015 ก็จะซ้ำกับ 2015 ที่เป็น พ.ศ. แต่ก็กะว่า จะเช็ค Condition ไว้ ว่าถ้ามี 20152015 ติดกันแบบนี้เมื่อไหร่ จะให้ Warnning
3. ตัวเลข 4 ตัวท้ายในข้อมูลดิบ เป็น mmss เสมอหรือเปล่าครับ หรือว่าถ้านาทีอยู่ในช่วง 1-9 ก็จะแสดงหลักเดียวเป็น mss เพราะเท่าที่ดูหลักวินาทีจะแสดงสองหลักตลอด
ตอบ: ไม่เสมอค่ะ แต่ผลลัพธ์ที่ต้องการต้องการให้เป็น mmss เสมอ ซึ่งตรงนี้รู้สึกเหมือนกันว่ายากมากในการกำหนดเงื่อนไข เพราะต้องคอยดูว่า mm ต้องเป็นตัวเลข 0-60 เช่นเดียวกับss ก็ 0-60 ถ้าชุดตัวเลขในข้อมูลดิบออกมาเป็น 58 ก็ไม่ทราบจะตัดสินใจอย่างไร ว่าจะให้เป็น นาทีที่ 5 วินาทีที่ 8 หรือ นาทีที่ 58 วินาทีที่ 00

จึงตัดสินใจไม่สนใจค่าวินาทีเพราะมีผลน้อยสุดและไม่ทำให้ข้อมูลบิดเบือนมากนัก ดังนั้นถ้า เลขไม่พอตัดสินใจ ก็จะปัดให้เป็นชุดของนาทีไปเลย ตราบใดที่มันไม่เกิน 0-60

**ขอโทษนะ ไม่ทราบจะอธิบายอย่างไรให้เข้าใจง่ายกว่านี้***
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#7

Post by kchn_deaw »

ตอบ คุณ menem

ข้อมูลตัวนี้ มีอะไรผิดพลาดไหมครับ ?
212020152295500
เพราะตัดแล้ว วันที่ 20150229 ไม่มีในของจริง (มันจะต้องเป็น 20150301)

ตอบ: จากชุดตัวเลข 212020152295500
น่าจะได้เป็น 21|0020|2015|02|02|09|55|00
เพราะ เดือน 2 น่าจะเป็นวันที่ 2 มากว่าวันที่ 29 เพราะเดือน 2 ปีนี้ มี 28วัน แต่เราตัดสินใจจากเลขถัดไปมากกว่าตรงที่ถ้าเป็นที่ 29 เลขถัดไปก็จะเป็น 5500 ซึ่งมันไม่น่ามีชั่วโมงที่ 5 นาทีที่ 5 วินาที ที่ 00

อ้อ อีกอย่างหนึ่งค่ะ ณ วันที่ได้ชุดข้อมูล จะเป็นวันที่จะไม่มีทางเป็นวันที่ที่ยังมาไม่ถึง คือเงื่อนไขที่ใช้พิสูจน์ความจริง เช่นสมมุติ ถึงแม้ปีนี้เดือน ก.พ.จะมี 29 วัน แต่สมมุติ ณ วันที่ทำ มันเป็นวันที่ 5/2/2015 ตัวเลขชุดนี้ก็จะไม่เป็น 20150229 แน่นอน แสดงว่า เลข 9 ต้องเป็นข้อมูลของ hhmmss แทน.....เป็นต้น
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#8

Post by kchn_deaw »

ตอบคุณ DhitiBank จากข้อที่สงสัยเรื่อง 4 ตัวท้าย

1. หากเลข 4 ตัวท้าย ไม่ใช่ mmss ตายตัวแล้ว จะมีวิธีตัดสินใจอย่างไรว่าหลักไหนเป็นนาที วินาที
ตอบจริงๆนะ ไม่ทราบจริงๆ ค่ะ เดาเอา จากความน่าจะเป็น ขอเพียง ชั่วโมง อยู่ในเลข 0-12 เลขนาทีคือ 0-60 ส่วนที่เหลือวินาที ไม่ค่อยเป็นผล เราตัวสินใจเติม 0 ข้างหลังให้ครบหลัก แทนที่จะเติม 0 ที่ชั่วโมง หรือ นาที

2. นอกจากปี ที่มีจำนวน 4 หลักตายตัว มีตำแหน่งไหนอีกไหมที่มีจำนวนหลักเท่าเดิมเสมอ (ผมเดาว่าไม่มี ถ้า 4 ตัวท้ายไม่ใช่ mmss ถ้าหากเป็นแบบนี้ผมว่ายากมากเลยนะครับ ที่จะเขียนสูตรให้ครอบคลุมทุกกรณี แต่อาจารย์หรือเพื่อนๆ ท่านอื่นอาจมีวิธีครับ)

ตอบค่ะ ไม่มีค่ะ เท่าที่ดูแล้ว ทุกตัวทุกตำแหน่งสามารถมี 0 ข้างหน้าได้หมดเลย
เช่น ตำแหน่งที่ 1,2 แสดงcode ผลผลิต สามารถเป็นได้ ตั้งแต่ 01-48 เท่านั้น
ตำแหน่งที่ 3-6 แสดงเบอร์กล่อง สามารถเป็นได้ ตั้งแต่ 0001-9999 เท่านั้น
ตำแหน่งที่ 7-10 แสดงปีที่ผลิต ดังนั้น ปีปัจจุบันจึงเป็นไปได้เพียว 2015 เท่านั้น ถ้าปีหน้าก็ 2016
ตำแหน่งที่ 11,12 แสดงเดือนที่ผลิต สามารถเป็นได้ ตั้งแต่ 01-12 เท่านั้น แต่วันที่ได้ชุดข้อมูลมา จะต้องไม่เกินกว่า วันที่ปัจจุบัน เช่น ณ วันที่ 3/2/2015 ได้เลข 2015229550 ก็น่าจะเป็นเดือน 02 วันที่ 02 เป็นต้น
ตำแหน่งที่ 13,14 แสดงวันที่ผลิต สามารถเป็นได้ ตั้งแต่ 01-30 หรือ 01-31 หรือ 01-28 หรือ 01-29 ขึ้นอยู่กับเลขชุดก่อนหน้าว่าเป็นเดือนอะไร
ตำแหน่งที่ 15-16 แสดงชั่วโมงที่ผลิต สามารถเป็นได้ ตั้งแต่ 01-24 เท่านั้น
ตำแหน่งที่ 17-18 แสดงนาทีที่ผลิต สามารถเป็นได้ ตั้งแต่ 00-60 เท่านั้น
ตำแหน่งที่ 19-20 แสดงวินาทีที่ผลิต สามารถเป็นได้ ตั้งแต่ 00-60 เท่านั้น ***แต่จะตัดสินใจจากเลขของนาทีก่อนเสมอ ถ้าชุดตัวเลขข้อมูลดิบที่ได้มาหมดแล้ว ก็จะเติมเป็น 00 เพื่อให้ครบหลัก เท่านั้น****

ปัญหาที่เกิดจากชุดตัวเลขที่ได้มานี้ คือ เครื่องจักรจะแสดงชุดตัวเลขที่ทำการผลิตเฉาะค่าตัวเลข 1-9 ข้อมูลที่ต้องเป็น 0ข้างหน้า เครื่องจะไม่แสดง ทำให้ต้องมาหาวิธีแยกค่ะ
ยากอยู่ค่ะ เลยมาถามเพื่อนในที่นี้ นึกว่าเล่นเกมส์แล้วกันเนอะ เกมส์ชุดตัวเลข อิอิ..... :D
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#9

Post by menem »

ลองดูนะครับ (อยากให้ลองป้อนตัวเลขเล่น ๆ ดูด้วย)
อีกอย่างคือ มันเป็นเรื่องที่ค่อนข้างยากในการแปลงค่าลักษณะนี้กลับครับ
เพราะต้อง "เดา" ค่อนข้างมาก
You do not have the required permissions to view the files attached to this post.
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#10

Post by kchn_deaw »

ผมนี่ รีบไปแกะสูตร เลยครับ ถึงแม้จะใกล้เคียง แต่ก็ช่วยได้มากอยู่ค่ะ จะลองไปปรับบางตัวดู เพื่อเป็นเงื่อนไขตัดสินใจเพิ่ม ขอบคุณมากค่ะขอบคุณ

ปล. ท่านอื่น แนะนำเพิ่มเติมได้นะคะ ปล. อาจารย์ยังไม่อยู่ สงสัยตรวจงานสร้างบ้านอยู่ .....รีบมาตอบเร้วววว.....
User avatar
snasui
Site Admin
Site Admin
Posts: 30764
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#11

Post by snasui »

kchn_deaw wrote:รีบมาตอบเร้วววว
:shock: สำหรับการถามตอบในฟอรัม ขอให้คำนึงถึงกฎทุกข้อด้านบนเสมอไป ระมัดระวังด้วยครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#13

Post by DhitiBank »

อีกแบบหนึ่ง ลองดูตามไฟล์แนบครับ (ใช้คอลัมน์ช่วยเยอะ เขียนสูตรลงในนี้ไม่สะดวก)
หากทำเป็นประจำวัน สูตรที่ใช้จะง่ายกว่านี้ครับ

ที่จริง หากถามผู้จำหน่ายเครื่องดังกล่าวนี้น่าจะทราบรูปแบบรหัสที่แน่นอนนะครับ หรือบางทีอาจจะตั้งใหม่เป็นรูปแบบที่ต้องการได้ (ความคิดส่วนตัวนะครับ เคยทำงานโรงงาน พวกเครื่องรันรหัสรอบการผลิตมักจะตั้งตามความต้องการของผู้ใช้งานได้)
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30764
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#14

Post by snasui »

:D อีกตัวอย่าง สมมุติข้อมูลเริ่มที่ A2 ครับ
  1. B2 คีย์สูตรเพื่อหา วัน เดือน ปี
    =TEXT(LOOKUP(9.99999999999999E+307,--TEXT(MID(A2,FIND(2015,A2),{6,7,7,8}),{"0000\/0\/0","0000\/0\/00","0000\/00\/0","0000\/00\/00"})),"yyyymd")
    Enter > Copy ลงด้านล่าง
  2. C2 คีย์สูตรเพื่อจัด Format รายการใหม่
    =REPLACE(IF(LEFT(A2)+0>=5,0,"")&LEFT(A2,FIND(2015,A2,3)-1),3,0,REPT(0,6-LEN(IF(LEFT(A2)+0>=5,0,"")&LEFT(A2,FIND(2015,A2,3)-1))))&TEXT(LOOKUP(9.99999999999999E+307,--TEXT(MID(B2,1,{6,7,7,8}),{"0000\/0\/0","0000\/0\/00","0000\/00\/0","0000\/00\/00"})),"yyyymmdd")&TEXT(MID(A2,FIND(B2,A2)+LEN(B2),6),"000000")
    Enter > Copy ลงด้านล่าง
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#15

Post by DhitiBank »

:o จดๆๆๆๆ

อาจารย์ครับ การจัดรูปแบบของ TEXT แบบนี้
TEXT(MID(B7,1,{6,7,7,8}),{"0000\/0\/0","0000\/0\/00","0000\/00\/0","0000\/00\/00"})

หมายถึงอะไรเหรอครับ สำหรับวันที่เท่านั้นหรือเปล่าครับ ทำไมต้องมี "\/" :?:

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30764
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#16

Post by snasui »

:D เป็นการจัดรูปแบบตัวเลขที่มองเห็นว่าเป็นวันที่ให้แสดงออกมาเป็นวันที่ได้ครับ

สำหรับเรื่องหมาย \ จะเป็นการกำหนดว่าให้ทำการแทรกเครื่องหมายที่อยู่ด้านหลังเครื่องหมายนี้เอาไว้ใน Format ด้วย

หากเขียนเป็น \0 แสดงว่าต้องการแทรก 0 เข้าไปใน Format หรือหากเขียนเป็น \/ ตามตัวอย่างด้านบน จะเป็นการแทรกเครื่องหมาย / เข้าไปใน Format ครับ

การจัด Format มีเรื่องที่ต้องเรียนรู้จำนวนมากและไม่จำเป็นต้องเกียวกับวันที่เท่านั้น ต้องค่อย ๆ ศึกษาไปครับ ลองศึกษาจาก Link นี้เพิ่มเติมครับ Number Format
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#17

Post by DhitiBank »

เป็นแบบนี้นี่เอง
ขอบคุณอาจารย์มากครับ
User avatar
kchn_deaw
Member
Member
Posts: 30
Joined: Wed May 21, 2014 11:49 pm

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#18

Post by kchn_deaw »

snasui wrote:ลองศึกษาจาก Link นี้เพิ่มเติมครับ Number Format
ตามไปศึกษาดู ยากมาก ทำความเข้าใจอยู่นาน กลับมานั่ง แกะความหมายสูตรของแต่ละท่านที่ช่วยแนะนำมา พยายามเอา ของอาจารย์ มาผสมกับของ DhitiBank เนื่องจากท่าน DhitiBank เช็ค today() มาด้วย

กำลังแก้ไขชุดตัวเลขตัวอย่าง จากสูตรอาจารย์ ถ้าข้อมูล = 71520153182221 ผลลัพธ์อาจารย์ = 07001520150318002221 ซึ่งผลลัพธ์ที่น่าจะเป็นคือ 07001520150301082221 เนื่องจากขณะนี้ยังไม่ถึงวันที่ 18/3/2015 จึงน่าจะเป็น 1/3/2015 มากกว่า

ในขณะทดสอบ ปรับสูตร คุณ DhitiBank และ คุณ menem พบว่า วันที่หายไปเลย กลายเป็น 71520150300182200 วันที่เป็น 00 เนื่องจากสูตรนี้นับจากหลังมารวมกับหน้าแล้วถ้า Digit ครบก็เดาว่าเป็น hhmmss ไป พอตัวเลขใช้หมดแล้ววันที่เลยหายไป

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

ท้ายที่สุดนี้ก็เข้าใจนะคะว่า แก้ที่เครื่องจักรเลยซะก็หมดเรื่อง แต่เนื่องจากแจ้งเรื่องไปแล้วเงียบมากเพราะต้องติดต่ออีกหลายทอด สุดท้าย เราก็ต้องช่วยตัวเองไปก่อน เช่นนี้แล
ฝากไฟล์ที่เอาไปทำไว้ให้ดู เผื่อท่านใดอยากสนุกต่อ เหมือน เจ้าของกระทู้ ;)
kchn - Copy.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30764
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#19

Post by snasui »

:D เซลล์ Q2 ปรับสูตรเป็นด้านล่างครับ

=TEXT(MIN(TODAY(),IF(ISNUMBER(TEXT(MID($G$10,FIND(2015,$G$10),{6,7,7,8}),{"0000\/0\/0","0000\/0\/00","0000\/00\/0","0000\/00\/00"})+0),TEXT(MID($G$10,FIND(2015,$G$10),{6,7,7,8}),{"0000\/0\/0","0000\/0\/00","0000\/00\/0","0000\/00\/00"})+0)),"yyyymd")

Enter
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: คำแนะนำการใช้สูตรที่ช่วยให้จำนวน Digit ของชุดข้อมูลอยู่ในตำแหน่งเดียวกัน

#20

Post by DhitiBank »

มีข้อสงสัยเพิ่มเติมครับ เกี่ยวกับ 6 ตำแหน่งแรกก่อนถึงตำแหน่งที่เป็นปี ค.ศ. คือ
XX XXXX YYYY

สองตำแหน่งแรกมีค่าระหว่าง 01 - 48
สี่ตำแหน่งถัดมามีค่าระหว่าง 0001 - 9999

และจากตัวอย่างข้อมูลดิบ(ยังไม่แปลง) พบว่าตัวเลข 6 หลักนี้ จะแทนด้วยตัวเลข 2 - 6 หลัก แล้วจึงตามด้วยปี ถูกต้องไหมครับ เช่น 722015, 13232015, 7112015 ฯลฯ

หากตัวเลขในข้อมูลดิบมี 2 ตัว หรือ 6 ตัวก็จะไม่มีปัญหา แต่หากมี 3 - 5 ตัว อาจเกิดข้อผิดพลาดได้ถ้า 2 ตัวซ้ายน้อยกว่า 49 เช่น
123 --> 01 0023 หรือ 12 0003
21333 --> 21 0333 หรือ 02 1333

แต่ถ้าข้างหน้าเป็นเลขมากกว่า 4 หรือสองตัวซ้ายเป็น 49 ขึ้นไป จะไม่สับสน เช่น
577 --> 05 0077
4911 --> 04 0911

เลยอยากถามว่าเลข Bill กับเลข Running มีความสัมพันธ์แบบอื่นอีกไหมครับที่จะช่วยตัดข้อผิดพลาดด้านบนทิ้งไปได้ เช่น เลข bill เปลี่ยนไปเมื่อเลข running ถึงเท่านี้ หรืออื่นๆ เพราะคิดว่าเลขชุดนี้คงเอาไว้ใช้ทำ mock recall ด้วย กรณีต้องสอบกลับเพราะสินค้ามีปัญหา หากทราบเกณฑ์ที่ละเอียดขึ้น ก็จะช่วยให้แปลงรหัสได้สมบูรณ์มากขึ้นครับ เพราะอาจารย์ก็จัดการเรื่องสันที่ให้แล้ว ;)
Post Reply