Page 1 of 1
ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Wed Dec 14, 2022 11:39 am
by wisitsakbenz
เรียน อาจารย์
ไฟล์ "Pre-Arrangement1 - Copy - Copy" คลิก Getdata > Save > จะถูกเก็บในไฟล์ "All Data Estimated"
อยากสอบถามอาจารย์ว่า ทำไมหน้า input "E22" ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000 ใน Column "CD"
ไม่แน่ใจว่าต้องแก้ไขอย่างไรครับ ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Wed Dec 14, 2022 4:14 pm
by snasui

กรณีเช่นนี้บอกได้แต่เพียงว่าโปรแกรมมองว่า Field นั้นคือ String ไม่ใช่ Number เมื่อนำไปวางจึงกลายเป็น String แต่เมื่อดึงออกมากลับแสดงเป็น Number ได้ปกติ
เราไม่สามารถ Set Data Type ให้กับ Statement แบบรวบรัดเช่นนั้น และหากจะกำหนดค่าที่บันทึกเข้าไปแยกราย Field จะยิ่งทำให้ Code ดูยืดยาวและยุ่งยากซับซ้อน หากว่าไม่มีผลกระทบต่อการใช้งานก็สามารถใช้ได้ตามปกติ
แต่หากมีผลกระทบ สามารถแก้ไขเฉพาะหน้าโดยในตอนนำไปใช้ให้แปลงกลับเป็น Number ด้วยวิธีการใด ๆ เช่นเขียนเขียน Code เข้าไปจัดการเพื่อ Convert ให้กลายเป็น Data Type ที่ต้องการเสียก่อนครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Wed Dec 14, 2022 10:30 pm
by wisitsakbenz
เรียน อาจารย์ snasui
หากว่าไม่มีผลกระทบต่อการใช้งานก็สามารถใช้ได้ตามปกติ
เขียนเขียน Code เข้าไปจัดการเพื่อ Convert ให้กลายเป็น Data Type ที่ต้องการเสียก่อนครับ
มีผลต่อการใช้งานครับ ต้องนำค่ามารวมกันครับ
อาจารย์ แนะนำ code ที่สามารถ convert เป็น data type หนือสามารถ ศึกษาได้จากแหล่งใดครับ
ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 6:02 am
by snasui

ดูตัวอย่างการ Loop เข้าไปในแต่ละเซลล์ตาม Link นี้ซึ่งเลือกมาให้แล้วว่าเริ่มดู ณ เวลาใด ไม่ต้องเลื่อนไปดูตั้งแต่ต้น Clip ครับ
https://youtu.be/e7quHzzLO7g?t=444
ดู Data Type Conversion (การแปลง Data Type) ได้ที่ Link นี้ครับ
https://learn.microsoft.com/en-us/offic ... -functions
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 8:36 am
by wisitsakbenz
เรียน อาจารย์ snasui
การ Loop เข้าไปในแต่ละเซลล์ตาม Link
ผมต้องการแยก Data ออกจากหน้า input ครับ เพราะข้อมูลตอนนี้มีประมาณ 4 หมื่นกว่า Row ถ้าบันทึกข้อมูลในลักษณะนี้จะทำให้ไฟล์หนัก และบันทึกช้าครับ
ผมลองปรับ Code แล้วแต่ยังไม่ได้
ไม่แน่ใจว่าปรับในส่วนนี้หรือไม่ครับ ขอคำแนะนำจากอาจารย์ด้วยครับ ขอบคุณครับ
Code: Select all
'-----other code
Dim sql As String, shtName As String
Dim arr() As Variant, i As Integer, j As Integer
sFile = "\\10.21.4.97\File Sharing2\DataPricing\All Data Estimated.xlsx"
shtName = CVar("[Data$]")
sCnstr.CursorLocation = adUseClient
'-----other code
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 10:38 am
by snasui
snasui wrote: Wed Dec 14, 2022 4:14 pm
สามารถแก้ไขเฉพาะหน้าโดย
ในตอนนำไปใช้ให้แปลงกลับเป็น Number ด้วยวิธีการใด ๆ

คุณ wisitsakbenz เข้าใจประโยคข้างบนว่าอย่างไรครับ
สิ่งที่ถามมาตามโพสต์
viewtopic.php?p=114424#p114420 นั้นเป้นขั้นตอนการนำไปใช้หรือขั้นตอนของการบันทึกเข้าไปครับ

Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 1:22 pm
by wisitsakbenz
เรียน อาจารย์ Snasui
สามารถแก้ไขเฉพาะหน้าโดยในตอนนำไปใช้ให้แปลงกลับเป็น Number ด้วยวิธีการใด ๆ เช่นเขียนเขียน Code เข้าไปจัดการเพื่อ Convert ให้กลายเป็น Data Type ที่ต้องการเสียก่อนครับ
ตอนแรก ผมเข้าใจว่า ---> อาจารย์ให้ลองเขียน Code มาดู
แต่ตอนนี้ผมเข้าใจว่า ---> แก้ไขโดยการลบ ' ออก ใน Sheet "All Data Estimated" ใช่หรือไม่ครับ อาจารย์
ผมเข้าใจถูกหรือไม่ครับ ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 1:28 pm
by snasui

ไม่ใช่ครับ
ความหมายคือ ไม่ต้องสนใจว่าบันทึกเข้าไปแล้วได้ Data Type ใด
ให้สนใจตอนดึงมาใช้งาน หากมันไม่แสดงเป็นตัวเลขให้ใช้ Code เข้าไปแปลงให้เป็นตัวเลขครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 2:40 pm
by wisitsakbenz
เรียน อาจารย์ Snasui
run > Sub LastData() เพื่อให้แสดงรายการล่าสุด
ค่าที่ได้ยังคงเป็น string (บาง Fields เป็น string บาง Fields เป็น integer ครับ)
ผมลองปรับ Code ไม่แน่ใจว่าปรับในส่วนนี้หรือไม่ครับ ขอคำแนะนำจากอาจารย์ด้วยครับ ขอบคุณครับ
Code: Select all
'-----other code
Dim sql As String, shtName As String
Dim arr() As Variant, i As Integer, j As Integer
sFile = "\\10.21.4.97\File Sharing2\DataPricing\All Data Estimated.xlsx"
shtName = CVar("[Data$]")
sCnstr.CursorLocation = adUseClient
'-----other code
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 3:38 pm
by snasui
wisitsakbenz wrote: Wed Dec 14, 2022 10:30 pm
มีผลต่อการใช้งานครับ ต้องนำค่ามารวมกันครับ

ค่อย ๆ ถามตอบกันไปครับ จากประโยคด้านบน รวมที่ไหนเมื่อไรครับ

Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:01 pm
by wisitsakbenz
เรียน อาจารย์ Snasui
จะ Sum (E22+G22) ครับอาจารย์
จากไฟล์นี้ค่าที่ดังออกมา สามารถรวมได้ปกติ แต่ใช้งานจริง บาง Fields ที่เป็น Text จะไม่สามารถรวมได้ครับ
ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:13 pm
by snasui

สามารถเขียนบวกกันธรรมดาได้เลยครับ
=E22+G22
หรือมีปัญหาใดครับ

Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:21 pm
by wisitsakbenz
เรียน อาจารย์ Snasui
ไฟล์ที่ใช้งานจริง บวกผิดครับ ต้องได้ค่า 19200 ครับ
ไม่แน่ใจว่าผิดอย่างไรครับ ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:23 pm
by snasui

แนบไฟล์นั้นมาและตัดมาเป็นตัวอย่างจะได้เห็นว่าบวกอย่างไร ผิดอย่างไร จะได้แก้ปัญหาได้ถูกจุดครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:33 pm
by wisitsakbenz
เรียน อาจารย์
ไฟล์จริงมีขนาดใหญ่ เลยตัดให้เฉพาะส่วนที่คำนวณครับ
ขอบคุณครับ
Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:39 pm
by snasui

ปรับสูตรเป็นด้านล่างครับ
=SUMPRODUCT(--A1:B12)
สิ่งที่ผมแนะนำให้แก้คือ Loop ไปแก้ที่ไฟล์นี้ซึ่งเป็นการนำไปใช้งาน เพื่อแปลงค่าแต่ละเซลล์ให้เป็น Number เสียก่อน แต่ดูเหมือนจะไม่เข้าใจในสิ่งที่แนะนำไป กลับพยายามจะไปปรับ Code ในตอนบันทึกอยู่ตลอดเวลา

Re: ใส่เป็นตัวเลข 5000 แต่ถูกจัดเก็บ เป็น '5000
Posted: Thu Dec 15, 2022 4:48 pm
by wisitsakbenz
เรียน อาจารย์ Snasui
=SUMPRODUCT(--A1:B12)
สิ่งที่ผมแนะนำให้แก้คือ Loop ไปแก้ที่ไฟล์นี้ซึ่งเป็นการนำไปใช้งาน เพื่อแปลงค่าแต่ละเซลล์ให้เป็น Number เสียก่อน แต่ดูเหมือนจะไม่เข้าใจในสิ่งที่แนะนำไป กลับพยายามจะไปปรับ Code ในตอนบันทึกอยู่ตลอดเวลา
สูตรนี้ใช้ได้แล้วครับ
ขอโทษอาจารย์ด้วยครับ ขอบคุณอาจารย์ที่แนะนำครับ
ขอบคุณครับ