: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

เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#1

Post by Totem »

:D เรียนอาจารย์และเพื่อนสมาชิก

ถามปัญหาดังนี้

เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

แบบที่ 1

ตาราง 1,2,3 เหมือนกัน ให้นับ
ตัวอย่าง
a1,c3 2 นับได้ มีทั้ง 3 ตารางไม่ว่าจะอยู่ในพื้นที่ใดๆ
และให้แสดงสีที่ต้องการ

ตาราง 2,3 เหมือนกัน ให้นับ มีทั้ง 2 ตารางไม่ว่าจะอยู่ในพื้นที่ใดๆ
b2 1 นับได้
และให้แสดงสีที่ต้องการ

แบบที่ 2
ตาราง 1,2,3 เหมือนกันในแถวคอลัมน์เดียวกัน ให้นับ
ตัวอย่าง
a1,d4 2 นับได้ คอลัมน์ I,L
และให้แสดงสีที่ต้องการ

ตาราง 2,3 เหมือนกันในแถวคอลัมน์เดียวกัน ให้นับ
b2,C3,E5 3 นับได้ คอลัมน์ J,K,M
และให้แสดงสีที่ต้องการ

ขอบคุณครับ
compare.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31146
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#2

Post by snasui »

:D คำถามคือ

ในตารางใด ๆ จะมีค่าซ้ำเกิดขึ้นได้หรือไม่ เช่นในตารางที่ 1 มี a1 ซ้ำกัน 3 ตัว และไม่มีในตารางอื่น หากมีกรณีเช่นนี้ จะนับอย่างไรครับ :?:
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#3

Post by Totem »

snasui wrote::D คำถามคือ

ในตารางใด ๆ จะมีค่าซ้ำเกิดขึ้นได้หรือไม่ เช่นในตารางที่ 1 มี a1 ซ้ำกัน 3 ตัว และไม่มีในตารางอื่น หากมีกรณีเช่นนี้ จะนับอย่างไรครับ :?:
:D แบบที่ 1

ถ้ามี a1 แล้วในทุกตาราง 1,2,3 จะไม่มี a1 ซ้ำอีก มีได้ตัวเดียวเท่านั้นในทุกตาราง

แบบที่ 2

ถ้ามี a1
ตัวอย่าง a1 มีในช่อง I2 แล้ว ในช่อง I1,I3:I12 จะไม่มี a1 อีก เป็นเช่นนี้ในตารางที่ 2
และ 3

- a1 มีในช่อง I2 , I18 , I28 นับ 1 ครั้ง และ
- a1 อาจมีอีกในคอลัมน์ J2:J12 , K2:K12 , L2:L12 , M2:M12 ได้ ให้นับในแนวคอลัมน์
ยกตัวอย่างในคอลัมน์ J เช่น a1 มีในช่อง J2 ในตารางที่1 , ช่อง J16 ในตารางที่2 , ช่อง J25
ในตารางที่3 แล้ว ให้นับเป็น 1 ครั้ง ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31146
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#4

Post by snasui »

:D ลองดูตัวอย่างการใช้ Conditional Formatting ตามไฟล์แนบ ซึ่งผมทำตัวอย่างมาให้สำหรับแบบที่ 1 ส่วนแบบที่ 2 ลองประยุกต์จากแบบที่ 1 และลองทำมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

การดู Conditional Formatting ที่กำหนดไว้แล้วให้คลิกที่ B3 > เข้าเมนู Home > Conditional Formatting > Manage Rules > เลือก Rule ที่สนใจ > คลิกปุ่ม Edit Rule > สังเกตการกำหนดค่า
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#5

Post by Totem »

snasui wrote::D ลองดูตัวอย่างการใช้ Conditional Formatting ตามไฟล์แนบ ซึ่งผมทำตัวอย่างมาให้สำหรับแบบที่ 1 ส่วนแบบที่ 2 ลองประยุกต์จากแบบที่ 1 และลองทำมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

การดู Conditional Formatting ที่กำหนดไว้แล้วให้คลิกที่ B3 > เข้าเมนู Home > Conditional Formatting > Manage Rules > เลือก Rule ที่สนใจ > คลิกปุ่ม Edit Rule > สังเกตการกำหนดค่า
:D ได้คำตอบในส่วน Conditional Formatting แล้วครับ ขอบคุณครับ

ขอถามเพิ่มเติม หากต้องการทราบจำนวนที่เหมือนกัน ตาราง 1,2,3 แล้วนับออกมา
ตัวอย่าง
ตาราง 1 ได้ a1 ช่อง B3 ,c3 ช่อง D5
ตาราง 2 ได้ a1 ช่อง C15 ,c3 ช่อง F18
ตาราง 3 ได้ a1 ช่อง D27 ,c3 ช่อง B30

นับได้ทั้งหมดเท่ากับ 2

ตอบ ช่อง c54 = 2

ต้องการทราบนับจำนวนที่เหมือนกัน ตาราง 2,3 แล้วนับออกมา
ตัวอย่าง
ตาราง 2 ได้ b2 ช่อง E15
ตาราง 3 ได้ b2 ช่อง F28

นับได้ทั้งหมดเท่ากับ 1

ตอบ ช่อง c63 = 1
compare_1.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31146
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#6

Post by snasui »

:D ให้แสดงผลที่ผลที่ชีทใด เซลล์ใดครับ

สำหรับการนับข้อมูลที่กระจัดกระจาย ไม่เป็น Database ไม่เหมาะกับการใช้สูตร ให้นับด้วย VBA แทน ลองเขียนมาก่อน ติดตรงไหนค่อยถามกันต่อครับ
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#7

Post by Totem »

snasui wrote::D ให้แสดงผลที่ผลที่ชีทใด เซลล์ใดครับ

สำหรับการนับข้อมูลที่กระจัดกระจาย ไม่เป็น Database ไม่เหมาะกับการใช้สูตร ให้นับด้วย VBA แทน ลองเขียนมาก่อน ติดตรงไหนค่อยถามกันต่อครับ
:D ขอบคุณครับ จะลองเขียนติดตรงไหนจะสอบถามอีกครั้งครับ
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#8

Post by Totem »

:D เรียนอาจารย์และเพื่อนสมาชิก

ช่วยแก้ไขปรับ code ครับ

Code: Select all

Sub count()

Dim LR1 As Long, LR2 As Long, i As Long
Dim Cnt1 As Integer, Cnt2 As Integer


LR1 = Sheets(1).Cells(Rows.count, 2).End(xlUp).Row

For i = 1 To LR1
    
    LR2 = Sheets(1).Cells(Rows.count, 9).End(xlUp).Row + 1
    
    Cnt1 = Application.WorksheetFunction.CountIf _
        (Sheets(1).Range("B3:F" & LR1), Sheets(1).Cells(i, 2))
    
     
    Cnt2 = Application.WorksheetFunction.CountIf _
        (Sheets(1).Range("A1:A" & LR2), Sheets(1).Cells(i, 2))
    
    If Cnt1 > 2 And Cnt2 = 0 Then
        If Sheets(1).Cells(LR2, 9) = "" Then
            Sheets(1).Cells(LR2, 9) = Sheets(1).Cells(i, 2)
            Sheets(1).Cells(LR2, 10) = Cnt1
        Else
            Sheets(1).Cells(LR2 + 1, 9) = Sheets(1).Cells(i, 2)
            Sheets(1).Cells(LR2 + 1, 10) = Cnt1
        End If
    End If
Next
End Sub
ปัญหาคือ

1.

Code: Select all

1.LR1 = Sheets(1).Cells(Rows.count, 2).End(xlUp).Row 
ไม่ครอบคลุมพื้นที่ ที่ต้องการ หากในคอลัมน์ที่ 2 ไม่มีข้อมูลจะไม่นับครับ ต้องการให้อยู่ในช่วง B3:F34
ทำให้ไม่นับ b2
2.code ที่เขียน นับจำนวนแล้วได้ ช่องI2=a1 , ช่องJ2=3 , ช่องI3=c3 , ช่องJ3=3 ซึ่งไม่ได้ต้องการที่ถูกต้อง
คือ
ต้องการให้ได้ข้อมูล
a1 - ช่อง J2 =1
c3 - ช่อง J3 =1
b2 - ช่อง J4 =1

ขอบคุณครับ
compare_2.xlsm
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31146
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#9

Post by snasui »

:D ดูจากลักษณะตัวอย่างและคำตอบที่ต้องการแล้วสามารถใช้สูตรได้ โดย

ที่ J2 คีย์สูตร

=((COUNTIF($B$4:$F$13,I2)+COUNTIF($B$15:$F$24,I2)+COUNTIF($B$26:$F$35,I2))>1)+0

Enter > Copy ลงด้า่นล่างครับ
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#10

Post by Totem »

snasui wrote::D ดูจากลักษณะตัวอย่างและคำตอบที่ต้องการแล้วสามารถใช้สูตรได้ โดย

ที่ J2 คีย์สูตร

=((COUNTIF($B$4:$F$13,I2)+COUNTIF($B$15:$F$24,I2)+COUNTIF($B$26:$F$35,I2))>1)+0

Enter > Copy ลงด้า่นล่างครับ
:D ตัวอย่าง ข้อมูลในช่อง I2:I4 เป็น a1,c3,b2 เป็นข้อมูลบางส่วนครับ
อาจจะเป็น d3 , p3 ฯลฯ จะไม่ทราบแน่นอนว่าเป็นข้อความตัวเลขใด จะปรากฎในพื้นที่ $B$4:$F$13 , $B$15:$F$24 , $B$26:$F$35 สูตรข้างต้นจึงไม่ได้คำตอบที่ต้องการครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31146
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#11

Post by snasui »

:D จากตัวอย่างที่เขียนมาแสดงให้เห็นว่าเป็นการระบุเข้าไปเองครับ

กรณี List ค่าใน I2:I4 ด้วย Code ดูตัวอย่างตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r As Range, rall As Range
    Dim rcheck As Range
    With Sheets("sheet1")
        Set rall = .Range("b3:f34").SpecialCells(xlCellTypeConstants)
        For Each r In rall
            Set rcheck = .Range("i1", .Range("i" & .Rows.count).End(xlUp))
            If Application.CountIf(rcheck, r) = 0 Then
                .Range("i" & .Rows.count).End(xlUp).Offset(1, 0) = r.Value
            End If
        Next r
    End With
End Sub
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#12

Post by Totem »

snasui wrote::D จากตัวอย่างที่เขียนมาแสดงให้เห็นว่าเป็นการระบุเข้าไปเองครับ

กรณี List ค่าใน I2:I4 ด้วย Code ดูตัวอย่างตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r As Range, rall As Range
    Dim rcheck As Range
    With Sheets("sheet1")
        Set rall = .Range("b3:f34").SpecialCells(xlCellTypeConstants)
        For Each r In rall
            Set rcheck = .Range("i1", .Range("i" & .Rows.count).End(xlUp))
            If Application.CountIf(rcheck, r) = 0 Then
                .Range("i" & .Rows.count).End(xlUp).Offset(1, 0) = r.Value
            End If
        Next r
    End With
End Sub
:D ใช้ได้ตามต้องการครับ ขอบคุณครับ
วังวู ช่ง
Silver
Silver
Posts: 807
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: เปรียบเทียบซ้ำ2ตาราง,3ตารางแล้วนับจำนวนและแสดงสี

#13

Post by วังวู ช่ง »

snasui wrote::D จากตัวอย่างที่เขียนมาแสดงให้เห็นว่าเป็นการระบุเข้าไปเองครับ

กรณี List ค่าใน I2:I4 ด้วย Code ดูตัวอย่างตามด้านล่างครับ

Code: Select all

Sub test()
    Dim r As Range, rall As Range
    Dim rcheck As Range
    With Sheets("sheet1")
        Set rall = .Range("b3:f34").SpecialCells(xlCellTypeConstants)
        For Each r In rall
            Set rcheck = .Range("i1", .Range("i" & .Rows.count).End(xlUp))
            If Application.CountIf(rcheck, r) = 0 Then
                .Range("i" & .Rows.count).End(xlUp).Offset(1, 0) = r.Value
            End If
        Next r
    End With
End Sub
:D :thup: :cp:
Post Reply