ไปยังเนื้อหาหลัก

วิธีนับอีเมลตามหมวดหมู่ใน Outlook

คุณอาจเน้นอีเมลที่มีหมวดหมู่สีใน Outlook แต่คุณรู้วิธีนับอีเมลตามหมวดหมู่หรือไม่? บทความนี้จะแบ่งปันสองวิธี:

Office Tab - เปิดใช้งานการแก้ไขแบบแท็บและการเรียกดูใน Microsoft Office ทำให้งานเป็นเรื่องง่าย
Kutools for Outlook - เพิ่ม Outlook ด้วยฟีเจอร์ขั้นสูงกว่า 100+ รายการเพื่อประสิทธิภาพที่เหนือกว่า
เพิ่มประสิทธิภาพ Outlook 2021 - 2010 หรือ Outlook 365 ของคุณด้วยฟีเจอร์ขั้นสูงเหล่านี้ เพลิดเพลินกับการทดลองใช้ฟรี 60 วันและยกระดับประสบการณ์อีเมลของคุณ!

ลูกศรสีฟ้าฟองขวา นับอีเมลตามหมวดหมู่ใน Outlook ด้วยคุณลักษณะการค้นหาทันที

วิธีนี้จะแนะนำให้คุณค้นหาอีเมลทั้งหมดที่ทำเครื่องหมายด้วยหมวดหมู่สีที่ระบุโดย การค้นหาทันที แล้วรับจำนวนผลการค้นหาทั้งหมดได้อย่างง่ายดายที่ไฟล์ แถบสถานะ.

1 ใน จดหมาย ดูกด Ctrl + E พร้อมกันเพื่อเปิดใช้งานไฟล์ เครื่องมือค้นหา.

2 คลิก ค้นหา > หมวดหมู่จากนั้นเลือกประเภทสีที่ระบุซึ่งคุณจะนับอีเมลตาม

3. ตอนนี้อีเมลทั้งหมดที่ทำเครื่องหมายด้วยหมวดหมู่สีที่ระบุจะพบและแสดงอยู่ในรายชื่ออีเมล และคุณสามารถรับจำนวนผลการค้นหาทั้งหมดได้อย่างง่ายดายที่แถบสถานะ ดูภาพหน้าจอ:

หมายเหตุ:

(1) สำหรับการนับอีเมลที่มีเครื่องหมาย หมวดหมู่สีเหลือง และ หมวดส้ม พร้อมกันโปรดพิมพ์เกณฑ์การค้นหา หมวดหมู่: = "หมวดหมู่สีเหลือง" และ "หมวดหมู่สีส้ม" เข้าไปใน การค้นหาทันที กล่องโดยตรง:

(2) สำหรับการนับอีเมลที่มีเครื่องหมาย หมวดหมู่สีเหลือง or หมวดส้ม พร้อมกันโปรดพิมพ์เกณฑ์การค้นหา หมวดหมู่: = "หมวดหมู่สีเหลือง" หรือ "หมวดหมู่สีส้ม" เข้าไปใน การค้นหาทันที กล่องโดยตรง


ลูกศรสีฟ้าฟองขวา นับอีเมลตามหมวดหมู่ใน Outlook ด้วย VBA

วิธีนี้จะแนะนำ VBA เพื่อนับอีเมลตามหมวดหมู่ในช่วงวันที่ที่กำหนดเองใน Outlook โปรดดำเนินการดังนี้:

1 ใน จดหมาย ดูเลือกโฟลเดอร์อีเมลที่คุณจะนับอีเมล

2 กด อื่น ๆ + F11 คีย์พร้อมกันเพื่อเปิดหน้าต่าง Microsoft Visual Basic for Applications

3 คลิก สิ่งที่ใส่เข้าไป > โมดูลจากนั้นวางโค้ด VBA ด้านล่างลงในหน้าต่างโมดูลการเปิดใหม่:

VBA: นับอีเมลตามหมวดหมู่ใน Outlook

Sub CategoriesEmails()

Dim oFolder As MAPIFolder
Dim oDict As Object
Dim sStartDate As String
Dim sEndDate As String
Dim oItems As Outlook.Items
Dim sStr As String
Dim sMsg As String


On Error Resume Next
Set oFolder = Application.ActiveExplorer.CurrentFolder

Set oDict = CreateObject("Scripting.Dictionary")

sStartDate = InputBox("Type the start date (format MM/DD/YYYY)")
sEndDate = InputBox("Type the end date (format MM/DD/YYYY)")

Set oItems = oFolder.Items.Restrict("[Received] >= '" & sStartDate & "' And [Received] <= '" & sEndDate & "'")
oItems.SetColumns ("Categories")

For Each aitem In oItems
sStr = aitem.Categories
If Not oDict.Exists(sStr) Then
oDict(sStr) = 0
End If
oDict(sStr) = CLng(oDict(sStr)) + 1
Next aitem

sMsg = ""
For Each aKey In oDict.Keys
sMsg = sMsg & aKey & ":   " & oDict(aKey) & vbCrLf
Next
MsgBox sMsg

Set oFolder = Nothing

 End Sub

4 กด F5 หรือคลิกปุ่ม Run เพื่อเรียกใช้ VBA นี้

5. (1) ในกล่องโต้ตอบ Microsoft Outlook ที่เปิดขึ้นครั้งแรกโปรดพิมพ์วันที่เริ่มต้นของช่วงวันที่ที่กำหนดเองที่คุณจะนับอีเมลภายในและคลิกที่ OK ปุ่ม (2) ในกล่องโต้ตอบ Microsoft Outlook ที่สองโปรดพิมพ์วันที่สิ้นสุดแล้วคลิกไฟล์ OK ปุ่ม. ดูภาพหน้าจอ:

ตอนนี้กล่องโต้ตอบปรากฏขึ้นและแสดงจำนวนอีเมลที่ทำเครื่องหมายด้วยหมวดหมู่สี ดูภาพหน้าจอ:


ลูกศรสีฟ้าฟองขวาบทความที่เกี่ยวข้อง


สุดยอดเครื่องมือเพิ่มผลผลิตในสำนักงาน

Kutools สำหรับ Outlook - คุณสมบัติอันทรงพลังมากกว่า 100 รายการเพื่อเติมพลังให้กับ Outlook ของคุณ

🤖 ผู้ช่วยจดหมาย AI: ส่งอีเมลระดับมืออาชีพทันทีด้วยเวทมนตร์ AI คลิกเพียงครั้งเดียวเพื่อตอบกลับอย่างชาญฉลาด น้ำเสียงที่สมบูรณ์แบบ การเรียนรู้หลายภาษา เปลี่ยนรูปแบบการส่งอีเมลอย่างง่ายดาย! ...

📧 การทำงานอัตโนมัติของอีเมล: ไม่อยู่ที่สำนักงาน (ใช้ได้กับ POP และ IMAP)  /  กำหนดการส่งอีเมล  /  Auto CC/BCC ตามกฎเมื่อส่งอีเมล  /  ส่งต่ออัตโนมัติ (กฎขั้นสูง)   /  เพิ่มคำทักทายอัตโนมัติ   /  แบ่งอีเมลผู้รับหลายรายออกเป็นข้อความส่วนตัวโดยอัตโนมัติ ...

📨 การจัดการอีเมล์: เรียกคืนอีเมลได้อย่างง่ายดาย  /  บล็อกอีเมลหลอกลวงตามหัวเรื่องและอื่นๆ  /  ลบอีเมลที่ซ้ำกัน  /  การค้นหาขั้นสูง  /  รวมโฟลเดอร์ ...

📁 ไฟล์แนบโปรบันทึกแบทช์  /  การแยกแบทช์  /  การบีบอัดแบบแบตช์  /  บันทึกอัตโนมัติ   /  ถอดอัตโนมัติ  /  บีบอัดอัตโนมัติ ...

🌟 อินเตอร์เฟซเมจิก: 😊อีโมจิที่สวยและเจ๋งยิ่งขึ้น   /  เพิ่มประสิทธิภาพการทำงาน Outlook ของคุณด้วยมุมมองแบบแท็บ  /  ลดขนาด Outlook แทนที่จะปิด ...

???? เพียงคลิกเดียวสิ่งมหัศจรรย์: ตอบกลับทั้งหมดด้วยไฟล์แนบที่เข้ามา  /   อีเมลต่อต้านฟิชชิ่ง  /  🕘 แสดงโซนเวลาของผู้ส่ง ...

👩🏼‍🤝‍👩🏻 รายชื่อและปฏิทิน: แบทช์เพิ่มผู้ติดต่อจากอีเมลที่เลือก  /  แบ่งกลุ่มผู้ติดต่อเป็นกลุ่มแต่ละกลุ่ม  /  ลบการแจ้งเตือนวันเกิด ...

เกิน คุณสมบัติ 100 รอการสำรวจของคุณ! คลิกที่นี่เพื่อค้นพบเพิ่มเติม

 

 

Comments (18)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
hi, i was able to do the export to excel, by eliminating the row Dim xWb As Workbook, xWs As Worksheet, but i really need to count the emails on daily basis, on the input date window, if i put the same day it wont give me back any results, i have to put 2 different days for it to work, is there a way around this? so i can count the emails on 1 day instead of 2
This comment was minimized by the moderator on the site
The total number of emails just used to appear beside the Name of the catagory. Does anyone know how to set this?
This comment was minimized by the moderator on the site
Hi,
Instead of only calculating from the selected folder, is there a way to include all the sub folders as well?
This comment was minimized by the moderator on the site
Hi
Did you manage to solve this ?
I would like to count in subfolders to.
This comment was minimized by the moderator on the site
Hello, is there is a possibility to count letters marked with categories if in one letter we have few cases and they must be counted: for example green category - 1 letter with 3 cases inside = 3 green category cases ?


ThANK YOU
This comment was minimized by the moderator on the site
is there a way you can covert this into an excel table?
This comment was minimized by the moderator on the site
Hi Dylan,
Below VBA code will place the count results in a new Excel workbook.
FYI, please enable the reference of “Microsoft Excel 16.0 Object Library” before running the VBA.
Sub CategoriesEmails()
Dim xFolder As MAPIFolder
Dim xDict As Object
Dim xStartDate As String, xEndDate As String
Dim xItems As Outlook.Items
Dim xStr As String, xMsg As String
Dim xExlApp As Object
Dim xWb As Workbook, xWs As Worksheet
Dim I As Integer
On Error Resume Next
Set xExlApp = CreateObject("Excel.Application")
Set xWb = xExlApp.Workbooks.Add
Set xWs = xWb.Sheets.Item(1)
Set xFolder = Application.ActiveExplorer.CurrentFolder
Set xDict = CreateObject("Scripting.Dictionary")
xStartDate = InputBox("Type the start date (format MM/DD/YYYY)")
xEndDate = InputBox("Type the end date (format MM/DD/YYYY)")
Set xItems = xFolder.Items.Restrict("[ReceivedTime] >= '" & xStartDate & "' And [ReceivedTime] <= '" & xEndDate & "'")
'xItems.SetColumns ("Categories")
For Each xItem In xItems
xStr = xItem.Categories
If Not xDict.Exists(xStr) Then
xDict(xStr) = 0
End If
xDict(xStr) = CLng(xDict(xStr)) + 1
Next xItem
xMsg = ""
xWs.Range("A1", "B1").Font.Bold = True
With xWs.Range("A1", "B1")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
xWs.Cells(1, 1) = "Categories"
xWs.Cells(1, 2) = "Count"
I = 2
For Each xKey In xDict.Keys
If xKey <> "" Then
xWs.Cells(I, 1) = xKey
xWs.Cells(I, 2) = xDict(xKey)
I = I + 1
End If
Next
xWs.Range("A1", "B" + CStr(I)).Columns.AutoFit
xExlApp.Visible = True
Set xFolder = Nothing
End Sub
This comment was minimized by the moderator on the site
Hi guys,
To make the above code run porperly, please first enable the reference of “Microsoft Excel 16.0 Object Library”.
To do so, please do as follows:1. In your Outlook, go to the tab Developer > Visual Basic.2. In the pop-up window, click Tools.3. In the pop-up dialog, check Microsoft Excel 16.0 Object Library, then click OK, see screenshot.
Note that the 16.0 indicates version number, so if it's not the same in your dialog, it doesn't matther. However, if you cannot find the Microsoft Excel (version number) Object Library, make sure that you have Excel installed in your computer.
After you enable the reference, please use the code above.
If you have any further questions, please don't hesitate to let me know.
Amanda
This comment was minimized by the moderator on the site
I know this is an older thread, but if anyone can assist it would be greatly appreciated. When running the code I'm hitting a compile error "User-defined type not defined" for the 8th line "Dim xWB As Workbook, xWs As Worksheet"
This comment was minimized by the moderator on the site
Hi
Did you manage to solve this ?
I got the same problem
Solution:
Simply delete the row:Dim xWb As Workbook, xWs As Worksheet
This comment was minimized by the moderator on the site
Can you add a way to breakout the count columns by day? So I could run a full month and then have counts broken out by day.
This comment was minimized by the moderator on the site
Hi Hannah,

Please try the code below:

<div data-tag="code">Sub CategoriesEmails()
Dim oFolder As MAPIFolder
Dim oDict As Object
Dim sStartDate As String
Dim sEndDate As String
Dim oItems As Outlook.Items
Dim sStr As String
Dim sMsg As String
Dim xStr, xStrDate, xStrDate_D As String
Dim xArr As Variant
Dim xNum As Integer
Dim xRlt As String
On Error Resume Next
Set oFolder = Application.ActiveExplorer.CurrentFolder
xNum = 0
Set oDict = CreateObject("Scripting.Dictionary")
sStartDate = InputBox("Type the start date (format MM/DD/YYYY)")
sEndDate = InputBox("Type the end date (format MM/DD/YYYY)")
Set oItems = oFolder.Items.Restrict("[ReceivedTime] >= '" & sStartDate & "' And [ReceivedTime] <= '" & sEndDate & "'")
oItems.SetColumns ("ReceivedTime")
xStrDate_D = ""
xRlt = ""
For Each aitem In oItems
xStr = aitem.ReceivedTime
If Trim(xStr) <> "" Then
xArr = Split(xStr, " ")
xStrDate = xArr(0)
If xStrDate_D = "" Then
xStrDate_D = xStrDate
xNum = 1
Else
If xStrDate <> "" Then
If xStrDate = xStrDate_D Then
xNum = xNum + 1
Else
If xRlt = "" Then
xRlt = xStrDate_D & ":" & xNum
Else
xRlt = xRlt & vbCrLf & xStrDate_D & ":" & xNum
End If
xStrDate_D = xStrDate
xNum = 1
End If
End If
End If
End If
Next
If xRlt <> "" Then
MsgBox xRlt
Else
MsgBox "No data found."
End If
End Sub
Also, for more statistic analysis, please go to the tab Kutools Plus > Statistics if you have installed Kutools for Outlook. If not, please <a href="https://www.extendoffice.com/download/kutools-for-outlook.html">click here to download</a> and get a 30-day trail for free.
Amanda
This comment was minimized by the moderator on the site
Thank you so much for your help!! I don't think I was clear enough in my initial question. Is there a way to have it break out by category and then give a count by day? So X Category would be broken down by count into date columns?
This comment was minimized by the moderator on the site
This was helpful for me also, thank you so much for sharing!
This comment was minimized by the moderator on the site
Hi , thanks it workd perfectly for month of June, but when I run this for July, it only shows the total number of emails... any idea?
This comment was minimized by the moderator on the site
Hi Thanks, it works perfectly, just one quick query- Can we get the Msgbox results to be displayed in excel, as whenever i want to run the macro it should be displayed in excel.
every time one below the previous results.
This comment was minimized by the moderator on the site
This would be great!
This comment was minimized by the moderator on the site
This is perfect, but how can I change the VBA to include subfolders of the current folder in the count?
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations