Page 1 of 2
แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:01 pm
by chom_poona
สวัสดีค่ะ
รบกวนสอบถามหน่อยค่ะ ถ้าเราต้องการหาค่าที่ซ้ำกันใน cells มาแสดง
เช่น
5 5 6
2 4 2
output
5 = 2
2 = 2
ใน excel มีสูตรอะไรไหมค่ะที่หาค่าซ้ำจาก Range ได้ ลองใช้ countif แล้ว จะหาได้แค่ค่า column
เราควรใช้ VBA เขียนสูตร count ไหมค่ะ
รบกวน เพื่อนสมาชิกแนะนำหน่อยค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:06 pm
by snasui

ตัวอย่าฟังก์ชัน Countif ที่ I2 ครับ
=COUNTIF($C$3:$E$10,H3)
Enter > Copy ลงด้านล่าง
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:10 pm
by chom_poona
ขอบคุณนะค่ะ
ในกรณีที่ ไม่มีค่า H3 ไว้อ้างอิงหละค่ะ ที่ยกตัวอย่างมาคือ เรา มีค่า H3 มันเลยมีตัวอ้างอิงแล้ว
ช่วง Range ถ้าไม่ได้อยู่ใน คอลัมน์เดียวกัน ก็อ้างอิงไม่ได้ใช่ไหมค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:20 pm
by chom_poona
ตัวอย่าง code ที่เขียน ด้วย VBA ค่ะ
แต่ยังไม่สามารถหาค่าได้
ในช่อง เช็คค่าซ้ำ เราควรใส่ array ไหมค่ะ
แล้วถ้าค่าใน array ไม่ซ้ำให้ลบออก ใช้สูตรอะไรค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:38 pm
by snasui

ผมยังไม่เข้าใจในสิ่งที่คุณ chom_poona อธิบายครับ
หากสิ่งที่ต้องการคือ
จากตัวเลข 2 กลุ่มในไฟล์ที่ยกตัวอย่างมา ให้หาว่าเลขใดบ้างซ้ำกัน หากซ้ำ ให้แสดงออกมาเพียงค่าเดียวเรียงลงไปด้านล่างเรื่อย ๆ และในคอลัมน์ถัดมาให้แสดงจำนวนที่ซ้ำ เราสามารถใช้สูตรเข้ามาช่วยได้ครับ
ตัวอย่างสูตร
- เซลล์ G3 คีย์เพื่อแสดงรายการออกมาเป็นคอลัมน์เดียวจะได้สะดวกในการใช้สูตรในข้อ 2
=IFERROR(INDEX($C$3:$E$10,INT((ROWS(G$3:G3)-1)/3)+1,MOD((ROWS(G$3:G3)-1),3)+1),"")
Enter > Copy ลงด้านล่าง โดยเลข 3 ใน Int และ Mod ที่ไม่เกี่ยวกับช่วงเซลล์คือจำนวนคอลัมน์ของข้อมูล
- ที่เซลล์ H3 คีย์สูตร เพื่อแสดงเฉพาะค่าที่ซ้ำเท่านั้น ค่าที่ไม่ซ้ำไม่นำมาแสดง
=IFERROR(INDEX($G$3:$G$100,SMALL(IF(FREQUENCY(IF($G$3:$G$100<>0,IF($G$3:$G$100<>"",IF(COUNTIF($G$3:$G$100,$G$3:$G$100)>1,MATCH($G$3:$G$100,$G$3:$G$100,0)))),ROW($G$3:$G$100)-ROW(G$3)+1),ROW($G$3:$G$100)-ROW(G$3)+1),ROWS(G$3:G3))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
ส่วน Countif คิดว่าน่าจะเข้าใจและเขียนเองได้อยู่แล้ว
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:47 pm
by chom_poona
ไฟล์ที่ยกมา เป็นตัวอย่างเท่านั้นค่ะ
ส่วนที่ต้องการใช้งานจริงก็คือ ใน ไฟล์ VBค่ะ หาข้อมูลที่ซ้ำกันใน ตาราง แล้วแสดงค่าที่ซ้ำกันออกมา ว่าซ้ำกันกี่ค่า
แล้วนำค่านั้น ไปเปรียบเทียบว่า น้อยกว่า หรือมากกว่าค่าที่กำหนดอีกครั้งหนึ่งค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 8:48 pm
by snasui

พิจารณาใช้สูตรที่ผมตอบไปว่าใช้ได้หรือไม่ ไม่ถูกต้องตรงไหน อย่างไร เรื่อง VBA ผมยังไม่ตอบครับ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:09 pm
by chom_poona
ขอบคุณมากค่ะ ยังมีบางตัวที่ซ้ำแต่ excel ไม่นับมาค่ะ
แล้ว ในช่อง G3 เราลากมายาว กว่า Range ที่กำหนด จะมีตัวเลข เพิ่มขึ้นมา ตรงนี้เรา ไม่ให้แสดงได้ไหมค่ะ
ถ้า คุณsnasui ว่าง รบกวน อธิบายสูตรให้ด้วยนะค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:14 pm
by snasui
chom_poona wrote:ขอบคุณมากค่ะ ยังมีบางตัวที่ซ้ำแต่ excel ไม่นับมาค่ะ

สูตรใน G3 เขียนไม่ถูกต้องครับ
ตรง
ROWS(G$3:G4) ต้องปรับให้เป็น
ROWS(G$3:G3) ครับ
ในคอลัมน์ G ต้องการจะแสดงรายการออกมาทั้งหมด ถ้าไม่ต้องการเห็นก็ต้องซ่อนครับ ค่าที่ใช้คือคอลัมน์ H เป็นต้นไป
สูตรนี้ยากมาก โดยสรุปเป็นการให้หาว่าค่าใดซ้ำกันบ้างโดยใช้ IF(COUNTIF($G$3:$G$100,$G$3:$G$100)>1 มาช่วย หากผลลัพธ์เป็นจริง แสดงว่าค่านั้นซ้ำ ก็จะเอาเฉพาะค่าที่ซ้ำมาทำการประมวลผลต่อ โดยค่าที่ซ้ำเหล่านั้นให้นำมาแสดงเพียงค่าเดียวของแต่ละชุด โดยใช้ Frequency เข้ามาช่วยจัดการให้แสดงค่าที่ซ้ำให้เหลือเพียงค่าเดียว
ผมมี Tag อยู่ใต้โพสต์ของผมทุกโพสต์ ลองศึกษาดูแต่ละฟังก์ชั่นที่เกี่ยวข้องอย่างละเอียด หากไม่เข้าใจส่วนใด ถามมาได้เรื่อย ๆ ครับ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:23 pm
by chom_poona
แก้ไขสูตรแล้ว แต่ จำนวนที่ซ้ำ 123 ยังไม่โชว์ ค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:28 pm
by snasui

ขออภัยครับ
ผมอ้างผิดเซลล์ เซลล์ที่ผิดคือ H3 ต้องแก้ใหม่ตามที่ผมแจ้งไป
ส่วนที่บอกว่าค่าวนนั้น ไม่วนครับ เป็นการนำ C3:E10 มาแสดงทุกเซลล์ ลากสูตรลงด้านล่างไปจนแสดงครบทุกค่าครับ
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:35 pm
by chom_poona
ที่ h3 แก้ตรงไหนค่ะ ที่เห็นก็ lock เซลไว้หมดแล้ว
ดึกแล้ว ขอบคุณมากนะค่ะที่สละเวลา
Re: แสดงค่าซ้ำใน Range
Posted: Sat May 21, 2016 9:39 pm
by chom_poona
ได้แล้วนะค่ะ ขอบคุณมากค่ะยังไง ขอลองศึกษาสูตรก่อนนะค่ะ ถ้าติดอะไร อาจต้องรบกวนนะค่ะ
คืนนี้นอนหลับแล้วฝันดีค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 6:40 am
by snasui
chom_poona wrote:ตัวอย่าง code ที่เขียน ด้วย VBA ค่ะ
แต่ยังไม่สามารถหาค่าได้
ในช่อง เช็คค่าซ้ำ เราควรใส่ array ไหมค่ะ
แล้วถ้าค่าใน array ไม่ซ้ำให้ลบออก ใช้สูตรอะไรค่ะ

ตัวอย่างการ Loop ด้วย VBA เพื่อนำค่ามาวางในคอลัมน์ J และ O ครับ
Code: Select all
Dim rAll As Range, r As Range
With ActiveSheet
Set rAll = .Range("b19:e24")
.Range("j6:j1000,o6:o1000").ClearContents
For Each r In rAll
If Application.CountIf(rAll, r.Value) > 1 Then
If r.Value < .Range("j2").Value Then
If Application.CountIf(.Range("j2", .Range("j" & .Rows.Count).End(xlUp)), r.Value) = 0 Then
.Range("j" & .Rows.Count).End(xlUp).Offset(1, 0).Value = r.Value
End If
Else
If Application.CountIf(.Range("o2", .Range("o" & .Rows.Count).End(xlUp)), r.Value) = 0 Then
.Range("o" & .Rows.Count).End(xlUp).Offset(1, 0).Value = r.Value
End If
End If
End If
Next r
End With
โดยจะนำเฉพาะค่าที่ไม่ซ้ำไปวางตามเงื่อนไข คือถ้าค่าไม่ซ้ำนั้นน้อยกว่าเซลล์ J2 ให้วางที่คอลัมน์ J ถ้าไม่น้อยกว่าเซลล์ J2 ให้วางที่คอคัมน์ O
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 2:59 pm
by chom_poona
ตาม code vba ที่ให้มา ลอง run แล้ว ขึ้น error ค่ะ
Set rAll = .Range("b19:e24") ที่แถวนี้ค่ะ
หรือว่า จะ เก็บค่าไว้ใน array ก่อนแล้ว ค่อย หาค่า ใช้ countif เอา จะลองทำดูก่อนนะค่ะ ขอบคุณมากค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 3:03 pm
by snasui

ในเครื่องผมไม่ Error ครับ
หากมี Error กรุณาแนบไฟล์นั้นมาด้วย จะได้ช่วยตรวจสอบได้ครับ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 3:24 pm
by chom_poona
ไม่ Error แล้วค่ะ ขอบคุณมากนะค่ะ
อยากรบกวนถามสูตร vba ในการ เรียงข้อมูลจากมากไปหาน้อยค่ะ สูตรที่มีอยู่ .xlDescending._นั้น เข้าใจว่าเปลี่ยนแค่ range เดียว
ถ้าต้องการให้ คอลัมน์อื่นเปลี่ยนด้วย ทำยังไงค่ะ
ตัวอย่างไฟล์ตามที่แนบค่ะ
และอยากรบกวนถามว่า เราจะทำยังไงถึงจะมองภาพexcel ออก สามารถแก้ไขโจทย์ต่างๆ ได้ ค่ะ อยากขอคำแนะนำจะได้นำไปใช้ประโยชน์ได้บ้างค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 3:32 pm
by snasui

ใช้การบันทึก Macro จะได้ Code มาให้ปรับใช้ได้ สำหรับวิธีการบันทึก Macro ดูวิธีการตาม Link นี้ครับ
wordpress/macro-recoding/
สำหรับคำถามเกี่ยวกับ VBA จำเป็นต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ
เรื่องการมองภาพและแก้ปัญหาใด ๆ ไม่ว่าจะด้วย Excel หรือโปรแกรมอื่นนั้น ขึ้นอยู่กับความรู้และประสบการณ์เป็นส่วนสำคัญ ต้องฝึกฝนบ่อย ๆ ครับ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 3:55 pm
by chom_poona
ได้กลับไปลองใช้ macro บันทึกแล้วค่ะ นำสูตรมาใส่ใน code เราแล้ว แต่ว่า ก็ยังไม่ sort ให้ค่ะ
รบกวนดูสูตรให้หน่อยค่ะ
ขอบคุณค่ะ
Re: แสดงค่าซ้ำใน Range
Posted: Sun May 22, 2016 3:59 pm
by snasui

ถ้า Sort แล้วผลลัพธ์จะต้องเป็นอย่างไร ช่วยอธิบายเพิ่มเติมและแนบไฟล์ตัวอย่างคำตอบมาอีกรอบครับ