ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย ระบุ 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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)  กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่  
	 
			
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#1 
			
									
						Post 
					 
								by Questioner  Tue Oct 21, 2025 3:36 pm 
			
			
			
			
			
			เรียน อาจารย์ และผู้รู้ทุกท่านครับ
			
			
						You do not have the required permissions to view the files attached to this post.
			
						
										
						 
		 
				
		
		 
	 
				
			
		
		
			
				
								snasui 							 
						Site Admin 			
		Posts:  31168 Joined:  Sun Jan 24, 2010 12:33 pmLocation:  Songkhla, ThailandExcel Ver:  2010, 2019
				Contact: 
				
			 
				
		 
		
						
					
													
							
						
	#2 
			
									
						Post 
					 
								by snasui  Tue Oct 21, 2025 4:52 pm 
			
			
			
			
			
			 ตัวอย่างสูตรครับ
เซลล์ E3 คีย์
=25*ISNUMBER(MATCH(B3,{"งงง","จจจ","ฉฉฉ","ซซซ"},0))*(C3>=MAXIFS($C$3:$C$28,$A$3:$A$28,A3,$B$3:$B$28,B3)) 
Enter > Copy ลงด้านล่าง
คำอธิบายสูตร
สูตรเริ่มต้นด้วย =25*... หมายถึง หากเงื่อนไขทั้งหมดเป็นจริง จะให้ผลตอบแทน 25 บาท 
MATCH(B3,{"งงง","จจจ","ฉฉฉ","ซซซ"},0) ใช้ตรวจสอบว่าเซลล์ B3 (ประเภทหนี้) อยู่ในกลุ่มที่กำหนดไว้หรือไม่ 
ISNUMBER(...) ใช้ตรวจสอบผลลัพธ์จาก MATCH ว่าเป็นตัวเลขหรือไม่ ซึ่งหมายถึงพบประเภทหนี้ที่ต้องการ 
MAXIFS($C$3:$C$28,$A$3:$A$28,A3,$B$3:$B$28,B3) ใช้หาปีที่มากที่สุด (ปีสุดท้าย) ของชุดหนี้ที่มีรหัสลูกหนี้เดียวกัน (A3) และประเภทหนี้เดียวกัน (B3) 
C3>=... ใช้เปรียบเทียบว่า ปีในเซลล์ C3 เป็นปีสุดท้ายของชุดนั้นหรือไม่ และต้องมากกว่าหรือเท่ากับ 2561 
การคูณเงื่อนไขทั้งหมดเข้าด้วยกัน (25 * เงื่อนไข1 * เงื่อนไข2) จะให้ผลลัพธ์เป็น 25 เฉพาะเมื่อทุกเงื่อนไขเป็นจริงเท่านั้น 
หากเงื่อนไขใดไม่เป็นจริง จะได้ค่าเป็น 0 โดยอัตโนมัติ  
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#3 
			
									
						Post 
					 
								by Questioner  Wed Oct 22, 2025 1:41 pm 
			
			
			
			
			
			เรียนอาจารย์ snasui ครับ
			
			
									
						
										
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#4 
			
									
						Post 
					 
								by Questioner  Wed Oct 22, 2025 3:07 pm 
			
			
			
			
			
			เรียน อาจารย์ snasui ครับ 
			
			
						You do not have the required permissions to view the files attached to this post.
			
						
										
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								snasui 							 
						Site Admin 			
		Posts:  31168 Joined:  Sun Jan 24, 2010 12:33 pmLocation:  Songkhla, ThailandExcel Ver:  2010, 2019
				Contact: 
				
			 
				
		 
		
						
					
													
							
						
	#5 
			
									
						Post 
					 
								by snasui  Wed Oct 22, 2025 4:13 pm 
			
			
			
			
			
			 ตัวอย่างสูตรที่เซลล์ A4 ครับ
=25*COUNT(UNIQUE(FILTER(ข้อมูล!$A$2:$A$16,(ข้อมูล!$B$2:$B$16=A$3)*(ข้อมูล!$C$2:$C$16>=2565)))) 
Enter > Copy ไปด้านขวา 
คำอธิบายสูตร
 ใช้ฟังก์ชัน FILTER เพื่อกรองข้อมูลจากช่วง A2:A16 โดยมีเงื่อนไขว่า: 
 จากผลลัพธ์ที่กรองได้ นำไปใช้กับฟังก์ชัน UNIQUE เพื่อคัดเฉพาะค่าที่ไม่ซ้ำกัน 
 นับจำนวนค่าที่ไม่ซ้ำด้วยฟังก์ชัน COUNT 
 คูณผลลัพธ์ที่ได้ด้วย 25 เพื่อคำนวณเป็นผลตอบแทนหรือคะแนนตามเงื่อนไข 
  
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#6 
			
									
						Post 
					 
								by Questioner  Fri Oct 24, 2025 10:36 am 
			
			
			
			
			
			เรียน อาจารย์ snasui ครับตั้งแต่ปี 2565 ลงไป  จะได้รับผลตอบแทนเพิ่ม
			
			
									
						
										
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								snasui 							 
						Site Admin 			
		Posts:  31168 Joined:  Sun Jan 24, 2010 12:33 pmLocation:  Songkhla, ThailandExcel Ver:  2010, 2019
				Contact: 
				
			 
				
		 
		
						
					
													
							
						
	#7 
			
									
						Post 
					 
								by snasui  Fri Oct 24, 2025 10:56 am 
			
			
			
			
			
			Questioner  wrote: Fri Oct 24, 2025 10:36 am 
โจทย์ที่ผมมีคือ ถ้านาย X เร่งรัดหนี้ที่เกิดตั้งแต่ปี 2565 ลงไป
 สิ่งที่ผมเขียนไว้ตอบโจทย์นี้ไว้เรียบร้อยแล้ว ลองเปิดด้วย Version 2021 ดู และหากยังไม่ได้คำตอบลองแนบไฟล์น้้นกลับมาพร้อมข้อผิดพลาดที่พบด้วยครับ
หากหมายถึงเป็นหนี้ก่อนและไม่เกินปี 2565 การเปลี่ยนจาก >= เป็น <= ถือเป็นการเปลี่ยนที่ถูกต้องและควรใช้ได้แล้วครับ
สำหรับการทำงานด้วย Version ที่ต่ำกว่านั้นเป็นสูตรที่ซับซ้อน เพื่อความกระชับจึงตอบด้วย Version 2021 ที่คุณมีใช้อยู่ด้วยเช่นกัน หากไม่มี 2021 ใช้ใน Update Profile ใหม่ หากมีเวลาผมจะลองหาคำตอบด้วย Version ที่ต่ำกว่าให้ครับ
 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#8 
			
									
						Post 
					 
								by Questioner  Fri Oct 24, 2025 1:44 pm 
			
			
			
			
			
			ขอขอบพระคุณอาจารย์ snasui เป็นอย่างสูงครับ 
			
			
									
						
										
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								snasui 							 
						Site Admin 			
		Posts:  31168 Joined:  Sun Jan 24, 2010 12:33 pmLocation:  Songkhla, ThailandExcel Ver:  2010, 2019
				Contact: 
				
			 
				
		 
		
						
					
													
							
						
	#9 
			
									
						Post 
					 
								by snasui  Fri Oct 24, 2025 2:41 pm 
			
			
			
			
			
			 ตัวอย่างสูตรใน Version เก่า ๆ ครับ
เซลล์ A4 คีย์
=25*COUNT(1/FREQUENCY(IF(ข้อมูล!$B$2:$B$16=A$3,IF(ข้อมูล!$C$2:$C$16<=2565,MATCH(ข้อมูล!$A$2:$A$16,ข้อมูล!$A$2:$A$16,0))),ROW(ข้อมูล!$A$2:$A$16)-ROW(ข้อมูล!$A$2)+1)) 
กดแป้น Ctrl+Shift+Enter แทนการกด Enter อย่างเดียว เนื่องจากเป็นสูตร Array เมื่อได้คำตอบแล้วค่อยคัดลอกไปด้านขวา
อธิบายสูตร
 ตรวจสอบว่าแต่ละแถวในช่วงข้อมูล!$B$2:$B$16 มีค่าเท่ากับ A$3 (เช่น ประเภทหนี้ที่ต้องการ) 
 ตรวจสอบว่าแต่ละแถวในช่วงข้อมูล!$C$2:$C$16 มีค่าปีน้อยกว่าหรือเท่ากับ 2565 
 หากทั้งสองเงื่อนไขเป็นจริง ให้ใช้ MATCH เพื่อหาตำแหน่งของข้อมูล!$A$2:$A$16 ภายในช่วงเดียวกัน เพื่อสร้างตัวเลขเฉพาะสำหรับแต่ละชื่อ (ใช้สำหรับการนับแบบไม่ซ้ำ) 
 ใช้ ROW(ข้อมูล!$A$2:$A$16)-ROW(ข้อมูล!$A$2)+1 เพื่อสร้าง array ของตำแหน่งแถวสำหรับใช้เป็น bin ในฟังก์ชัน FREQUENCY 
 ใช้ FREQUENCY เพื่อจัดกลุ่มค่าที่ไม่ซ้ำตาม bin ที่กำหนด 
 ใช้ 1/FREQUENCY(...) เพื่อสร้าง array ที่มีค่า 1 สำหรับค่าที่ไม่ซ้ำ และ error สำหรับค่าที่ซ้ำ 
 ใช้ COUNT(...) เพื่อนับจำนวนค่าที่ไม่ซ้ำจาก array ที่ได้ 
 คูณผลลัพธ์ด้วย 25 เพื่อแปลงเป็นผลตอบแทนตามโจทย์ 
  
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Questioner 							 
						Member 			
		Posts:  71 Joined:  Mon Jul 22, 2019 2:46 pmExcel Ver:  2010 2019 
		
						
					
													
							
						
	#10 
			
									
						Post 
					 
								by Questioner  Fri Oct 24, 2025 3:03 pm 
			
			
			
			
			
			ขอขอบพระคุณอาจารย์ snasui เป็นอย่างสูงอีกครั้งครับ