EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)แบบที่ 1snasui wrote: คำถามคือ
ในตารางใด ๆ จะมีค่าซ้ำเกิดขึ้นได้หรือไม่ เช่นในตารางที่ 1 มี a1 ซ้ำกัน 3 ตัว และไม่มีในตารางอื่น หากมีกรณีเช่นนี้ จะนับอย่างไรครับ
ได้คำตอบในส่วน Conditional Formatting แล้วครับ ขอบคุณครับsnasui wrote: ลองดูตัวอย่างการใช้ Conditional Formatting ตามไฟล์แนบ ซึ่งผมทำตัวอย่างมาให้สำหรับแบบที่ 1 ส่วนแบบที่ 2 ลองประยุกต์จากแบบที่ 1 และลองทำมาเองดูก่อน ติดตรงไหนค่อยถามกันต่อครับ
การดู Conditional Formatting ที่กำหนดไว้แล้วให้คลิกที่ B3 > เข้าเมนู Home > Conditional Formatting > Manage Rules > เลือก Rule ที่สนใจ > คลิกปุ่ม Edit Rule > สังเกตการกำหนดค่า
ขอบคุณครับ จะลองเขียนติดตรงไหนจะสอบถามอีกครั้งครับsnasui wrote: ให้แสดงผลที่ผลที่ชีทใด เซลล์ใดครับ
สำหรับการนับข้อมูลที่กระจัดกระจาย ไม่เป็น Database ไม่เหมาะกับการใช้สูตร ให้นับด้วย VBA แทน ลองเขียนมาก่อน ติดตรงไหนค่อยถามกันต่อครับ
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
Code: Select all
1.LR1 = Sheets(1).Cells(Rows.count, 2).End(xlUp).Row
ตัวอย่าง ข้อมูลในช่อง I2:I4 เป็น a1,c3,b2 เป็นข้อมูลบางส่วนครับsnasui wrote: ดูจากลักษณะตัวอย่างและคำตอบที่ต้องการแล้วสามารถใช้สูตรได้ โดย
ที่ J2 คีย์สูตร
=((COUNTIF($B$4:$F$13,I2)+COUNTIF($B$15:$F$24,I2)+COUNTIF($B$26:$F$35,I2))>1)+0
Enter > Copy ลงด้า่นล่างครับ
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
ใช้ได้ตามต้องการครับ ขอบคุณครับsnasui wrote: จากตัวอย่างที่เขียนมาแสดงให้เห็นว่าเป็นการระบุเข้าไปเองครับ
กรณี 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
snasui wrote: จากตัวอย่างที่เขียนมาแสดงให้เห็นว่าเป็นการระบุเข้าไปเองครับ
กรณี 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