snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#1
Post
by wisitsakbenz » Fri Feb 23, 2024 10:57 am
เรียน อาจารย์
ต้องการให้ช่วงวันที่ต่อหลัง ดังไฟล์แนบ ต้องปรับสูตรอย่างไรครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#2
Post
by norkaz » Fri Feb 23, 2024 12:03 pm
...
B2
=RIGHT(YEAR(A2),2)&"W"&TEXT(WEEKNUM(A2),"00")&" "&"("&MATCH(WEEKNUM(A2),WEEKNUM(--$A$2:$A$36),0)&"-"&DAY(LOOKUP(2,1/(WEEKNUM(A2)=WEEKNUM(--$A$2:$A$36)),$A$2:$A$36))&")"
Copy ลงไป
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
You do not have the required permissions to view the files attached to this post.
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#3
Post
by wisitsakbenz » Fri Feb 23, 2024 12:36 pm
เรียน อาจารย์ norkaz ทำไงให้สูตรเป็นปีกาครับ
ขอบคุณครับ
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#4
Post
by norkaz » Fri Feb 23, 2024 12:54 pm
wisitsakbenz wrote: Fri Feb 23, 2024 12:36 pm
เรียน อาจารย์ norkaz ทำไงให้สูตรเป็นปีกาครับ
ขอบคุณครับ
ไปที่ B2 ลองกด F2 แล้ว Enter ดูครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#5
Post
by wisitsakbenz » Fri Feb 23, 2024 1:11 pm
เรียน อาจารย์ครับ
เอาไปใช้งานจริง สูตรคำนวณนานมาก และผิดครับ
23W45 (187-11) ที่ถูก 23W45 (5-11)
23W46 (532-18) ที่ถูก 23W46 (6-18)
.
.
.
ต้องปรับสูตรอย่างไรครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#6
Post
by norkaz » Fri Feb 23, 2024 1:29 pm
...
สูตรที่เขียนไปควรถูกต้อง ตามตัวอย่าง ที่ให้มาทุกประการครับ
1. ตัวอย่าง ที่ท่านเจ้าของคำถามสอบถามมา มีวันที่ ไม่ซ้ำกัน และเรียงกัน แบบ วันต่อวัน ส่วน การนำไปใช้ คือวันที่ซ้ำกัน ตัวอย่างที่ท่านเจ้าของคำถาม สอบถามมา กับ ตัวอย่างที่นำไปใช้จริง ไม่สอดคล้องกัน ผลลัพธ์ จากการนำสูตรไปใช้ ย่อมไม่ถูกต้องครับ
2. การคำนวณ ช้า ลองปรับ ให้ใช้ตามช่วงข้อมูลจริง หรือเผื่อไปเล็กน้อย ประมาณ 6,000 แถว ตามจริง การ เลือกช่วง จำนวน 1 แสน แถว หมายถึง การเลือก เผื่อไปประมาณ 270 ปี หาก ซึ่ง ในความเป็นจริง อาจจะไม่จำเป็น ต้องเผื่อข้อมูลไปถึง 270 ปี ครับ
3. ผมรบกวน ทำตัวอย่าง " ตามที่ต้องนำไปใช้จริง " และอธิบาย เงื่อนไข ในการเขียนสูตรตามผลลัพธ์ นั้น เพื่อความเข้าใจที่ตรงกันครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#7
Post
by wisitsakbenz » Fri Feb 23, 2024 2:32 pm
เรียน อาจารย์
ข้อมูลจริงในแต่ละเดือนตกประมาณ 2000 Row ซึ่งในแต่ละเดือนไม่สามารถกำหนดตายตัวได้ว่ากี่ Row และข้อมูลจะเก็บประมาณ 2 ปี เลยสร้างไว้เป็น 100000 ครับ
ข้อมูลที่ต้องการตามไฮไลท์สีเหลือนะครับ
รบกวนอาจารย์ด้วยครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#8
Post
by norkaz » Fri Feb 23, 2024 6:12 pm
...
C2
=B2&" "&"("&DAY(INDEX($A$2:$A$5553,MATCH(WEEKNUM(A2),INDEX(WEEKNUM(--$A$2:$A$5553),0),0)))&"-"&DAY(LOOKUP(2,1/(WEEKNUM(A2)=WEEKNUM(--$A$2:$A$55530)),$A$2:$A$55530))&")"
Copy ลงไป
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
You do not have the required permissions to view the files attached to this post.
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#9
Post
by wisitsakbenz » Tue Feb 27, 2024 8:25 am
เรียน อาจารย์ norkaz
ลองนำไปใช้งาน เมื่อมีการเพิ่ม row จะมีการประมวลผลช้ามากเลยครับ
สามารถปรับสูตรให้ประมวลผลเร็วกว่านี้หรือไม่ครับ
ขอบคุณครับ
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#10
Post
by norkaz » Tue Feb 27, 2024 9:03 am
..
เอาสูตรนี้ไปวาง แล้ว ปรับช่วงไปตามจริง -- รบกวนช่วยแจ้งผลให้ทราบด้วยครับ ถ้ายังช้าอยู่ อาจจะต้องใช้ คอลัมน์ ของ Weeknum ไปช่วยครับ..
C2
=B2&" "&"("&DAY(INDEX($A$2:$A$5553,MATCH(WEEKNUM(A2),INDEX(WEEKNUM(--$A$2:$A$5553),0),0)))&"-"&DAY(LOOKUP(2,1/(WEEKNUM(A2)=WEEKNUM(--$A$2:$A$5553)),$A$2:$A$5553))&")"
Copy ลงไป
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#11
Post
by wisitsakbenz » Tue Feb 27, 2024 9:14 am
เรียน อาจารย์ norkaz
ลองเอาไปใช้งาน มีอาการช้า และหน่วงครับ
รบกวนอาจารย์อีกครั้งครับ ขอบคุณครับ
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#12
Post
by norkaz » Tue Feb 27, 2024 9:33 am
...
E2
=WEEKNUM(A2)
C2
=B2&" "&"("&DAY(INDEX($A$2:$A$5553,MATCH(WEEKNUM(A2),$E$2:$E$5553,0)))&"-"&DAY(LOOKUP(2,1/(E2=$E$2:$E$5553),$A$2:$A$5553))&")"
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
You do not have the required permissions to view the files attached to this post.
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#13
Post
by wisitsakbenz » Tue Feb 27, 2024 11:16 am
เรียน อาจารย์ norkaz
ลองเอาไปใช้งาน มีอาการช้า และหน่วงครับ
รบกวนอาจารย์อีกครั้งครับ ขอบคุณครับ
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#14
Post
by norkaz » Tue Feb 27, 2024 12:29 pm
...
สูตรที่ใช้ ระดับ 5000 แถว ไม่น่าช้า ผมเทสแล้ว เร็วอยู่ครับ
ถ้าจะช้าต้องระดับ แสนแถวขึ้นไป น่าจะมีผลต่อความเร็วช้าที่ แตกต่างกันชัดเจน
ลองใช้ คอลัมน์ ไปช่วย เพิ่มตามนี้ครับ
E2
=WEEKNUM(A2)
F2
=DAY(INDEX($A$2:$A$5553,MATCH(E2,$E$2:$E$5553,0)))
G2
=DAY(LOOKUP(2,1/(E2=$E$2:$E$5553),$A$2:$A$5553))
C2
=B2&" "&"("&F2&"-"&G2&")"
ถ้ายังช้าอยู่ น่าจะเป็นที่ ความเร็วของ คอมที่ใช้ครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#16
Post
by norkaz » Tue Feb 27, 2024 3:41 pm
...
WEEKNUM จะเริ่มต้นที่วัน อาทิตย์ และ จบที่วันเสาร์ เสมอ
ถ้าเริ่มที่วันอื่น สูตรที่เขียนไปทั้งหมดนั้น จะขัดแย้งกับ WEEKNUM
ลองตัดตัวอย่าง มาพอประมาณ แบบเดิม แนบเป็นไฟล์ Excel มาดูครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#17
Post
by wisitsakbenz » Tue Feb 27, 2024 4:31 pm
เรียน อาจารย์ norkaz
แนบไฟล์ให้แล้วครับ ถ้าลบ Row ให้น้อยลง สูตรที่ได้ถูกต้อง
รบกวนอาจารย์ด้วยครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#18
Post
by norkaz » Tue Feb 27, 2024 7:23 pm
...
ลองแยกชีท Weeknum แบบ ปีต่อปีดูครับ การคิด ข้ามปี WEEKNUM จะวนกลับมาเริ่มต้นใหม่เสมอ ทำให้การนับ ไม่ตรงกับที่ต้องการ ตามที่อยากให้เป็นแบบนั้นครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
norkaz
Gold
Posts: 1752 Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365
#19
Post
by norkaz » Wed Feb 28, 2024 7:40 am
...
กรณีทำแบบเดิม ไม่แยก ปี
ลองปรับไปแบบนี้ดูครับ
D2
=YEAR(A2)&TEXT(WEEKNUM(A2,15),"00")
E2
=DAY(INDEX($A$2:$A$6000,MATCH(D2,$D$2:$D$6000,0)))
F2
=DAY(LOOKUP(2,1/(D2=$D$2:$D$6000),$A$2:$A$6000))
** ส่วน ความเร็วช้า ขึ้นกับ จำนวนข้อมูลครับ ถ้าข้อมูล จำนวนมากๆ หลายๆหมื่นแถว ก็มีโอกาสช้าได้ครับ
** สนับสนุนฟอรั่ม กรุณา คลิกโฆษณาที่หน้าเพจ***
แมวใหญ่ Bigcat9
RCA พระราม9 กรุงเทพฯ
...
You do not have the required permissions to view the files attached to this post.
wisitsakbenz
Silver
Posts: 531 Joined: Mon Sep 09, 2019 3:13 pm
Excel Ver: 2013
#20
Post
by wisitsakbenz » Wed Feb 28, 2024 9:05 am
เรียน อาจารย์ norkaz
ได้แล้วครับ ขอบคุณอาจารย์ที่ช่วยเหลือครับ