: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

รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#1

Post by akekorn »

สวัสดีครั้บเพื่อนสมาชิกทุกท่าน
วันนี้ผมมีปัญหาอยากขอความรู้เรื่องสูตรการจัดการกลุ่มข้อมูล duplicate ตามจำนวนคู่ กล่าวคือหากผมมีข้อมูล
ผมต้องการจัดการข้อมูลให้เหลือจำนวนข้อมูลหาร 2 เหลือเท่าไหร่ให้ remove duplicate ให้เหลือตามยอดที่หารได้ตามตัวอย่าง
A1A1A1A1A1A1
A1A1A1A1A1A1
A1A1A1A1A1A1
A1A1A1A1A1A1
A1A1A1A1A1A1
A1A1A1A1A1A1
B2B2B2B2
B2B2B2B2
B2B2B2B2
B2B2B2B2

จากตัวอย่างข้อมูลชุดแรก มีจำนวนซ้ำ 6 ครั้ง เมื่อหาร 2 จะได้ 6
ผมต้องการให้แสดงเพียง
A1A1A1A1A1A1
A1A1A1A1A1A1
A1A1A1A1A1A1

และตัวอย่างที่2 มีข้อมูลจำนวนซ้ำ 4 ครั้่งเมื่อหาร 2 จะได้ 2
ผมต้องการให้แสดงเพียง
B2B2B2B2
B2B2B2B2


โดยผมได้แนบตัวอย่างมาด้วยต้องขอความอนุเคราะห์เพื่อนสมาชิกด้วยครับผม
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3723
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#2

Post by puriwutpokin »

ที่ D1=IF(--(COUNTIF(A$1:A1,A1)>COUNTIF(A$1:A$36,A1)/2)=0,A1,"")
:shock: :roll: :D
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#3

Post by akekorn »

พอดีลองเขียน vba ดู แต่มันไม่ลบตามเงื่อนไขที่ต้องการครับ โดยผมได้แนบ file มาด้วย

Code: Select all

Sub DeleteTheDoops()
Dim RowNdx As Long
Dim RowNdx2 As Long
Dim FR As Long
FR = Range("A1:A1").End(xlDown).Row 'Freeze this row
For RowNdx = FR To 2 Step -1
    For RowNdx2 = FR To 2 Step -1
        'From what I can tell, you are interested when A, E and F are
        'equal and when C is smallest, so ...
        If RowNdx <> RowNdx2 And _
           Cells(RowNdx, "A").Value = Cells(RowNdx2, "A").Value Then
               Rows(RowNdx2).Delete
        End If
    Next RowNdx2
Next RowNdx
End Sub

รบกวนเพื่อนสมาชิกช่วยผมด้วยครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#4

Post by akekorn »

ขอบคุณ คุณpuriwutpokin มากๆครับ แต่ถ้าผมอยากเขียน เป็น VBA จะเขียน อย่างไรดีครับ เพราะเวลาใช้งานจริง ข้อมูลเป็นหลักแสน รบกวนแนะนำว่า VBAที่ผมทำต้องปรับแก้อะไรดีถึงจะได้คำตอบที่ต้องการครับ
ขอบคุณครับ
User avatar
puriwutpokin
Guru
Guru
Posts: 3723
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#5

Post by puriwutpokin »

ลองปรับโค้ดตามนี้ดูครับ

Code: Select all

Sub KeepDuplicateHaft()
Dim rAll As Range
Dim i, N As Integer
Set rAll = Range("A1:A36")
N = Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = True
For i = 1 To N
If (Application.CountIf(Range("A1:A" & i), Cells(i, "A")) > Application.CountIf(rAll, Cells(i, "A")) / 2) = 0 Then
Cells(i, "A") = Cells(i, "A")
Else
Cells(i, "A") = ""
End If
Next i
rAll.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub
:shock: :roll: :D
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#6

Post by akekorn »

ขอบพระคุณมากๆครับผม
User avatar
Bo_ry
Gold
Gold
Posts: 1244
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: รบกวนขอสูตรแยก ข้อมูลที่ duplicate ตามเงือนไขของจำนวนคู่

#7

Post by Bo_ry »

อีกแบบ

Code: Select all

Sub RemoveHalf()
On Error Resume Next
Dim R As Range

For Each R In Range("a1").CurrentRegion
If R = R.Offset(1) And R.Offset(-1, 3) = "" Then R.Offset(0, 3) = R
Next
Range("a1").CurrentRegion.Offset(0, 3).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub
Post Reply