跳到主要內容

如何在Outlook中按類別對電子郵件進行計數?

您可能在Outlook中突出顯示了具有顏色類別的電子郵件。 但是,您知道如何按類別對電子郵件進行計數嗎? 本文將分享兩種解決方案:

Office 標籤 - 在 Microsoft Office 中啟用選項卡式編輯和瀏覽,讓工作變得輕而易舉
Kutools for Outlook - 透過 100 多個進階功能增強 Outlook,實現卓越效率
使用這些進階功能增強您的 Outlook 2021 - 2010 或 Outlook 365。 享受全面的 60 天免費試用並提升您的電子郵件體驗!

箭頭藍色右氣泡 使用即時搜索功能在Outlook中按類別對電子郵件進行計數

此方法將指導您查找所有由指定顏色類別標記的電子郵件。 即時搜索 功能,然後輕鬆地從處獲取所有搜索結果的總數 狀態欄.

1。 在裡面 郵件 查看,按 按Ctrl + E 同時激活按鍵 搜索工具.

2。 點擊 檢索 > 分類,然後選擇指定的顏色類別,以此作為電子郵件計數依據。

3.現在,找到所有標記有指定顏色類別的電子郵件,並將其列在郵件列表中。 而且,您可以在狀態欄上輕鬆獲得所有搜索結果的總數。 看截圖:

筆記:

(1)用於計數標有的電子郵件 黃色類 橙色類別 同時,請輸入搜索條件 category:=“黃色類別”和“橙色類別”即時搜索 直接裝箱:

(2)用於計數標有的電子郵件 黃色類 or 橙色類別 同時,請輸入搜索條件 category:=“黃色類別”或“橙色類別”即時搜索 直接裝箱。


箭頭藍色右氣泡 使用VBA在Outlook中按類別對電子郵件進行計數

此方法將引入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 鍵或單擊“運行”按鈕以運行此VBA。

5. (1) 在第一個彈出的Microsoft Outlook對話框中,請輸入您將在其中計算電子郵件的自定義日期範圍的開始日期,然後單擊 OK 按鈕。 (2) 在第二個Microsoft Outlook對話框中,輸入結束日期,然後單擊 OK 按鈕。 查看屏幕截圖:

現在出現一個對話框,顯示帶有顏色類別標記的電子郵件數量。 看截圖:


箭頭藍色右氣泡相關文章


最佳辦公生產力工具

Kutools for Outlook - 超過 100 種強大的功能可增強您的 Outlook

🤖 人工智慧郵件助手: 具備人工智慧魔力的即時專業電子郵件——一鍵天才回覆、完美語調、多語言掌握。輕鬆改變電子郵件! ……

📧 電子郵件自動化: 外出(適用於 POP 和 IMAP)  /  安排發送電子郵件  /  發送電子郵件時按規則自動抄送/密件副本  /  自動轉送(進階規則)   /  自動添加問候語   /  自動將多收件者電子郵件拆分為單獨的訊息 ...

📨 電子郵件管理: 輕鬆回憶電子郵件  /  按主題和其他人阻止詐騙電子郵件  /  刪除重複的電子郵件  /  進階搜索  /  合併資料夾 ...

📁 附件專業版批量保存  /  批量分離  /  批量壓縮  /  自動保存   /  自動分離  /  自動壓縮 ...

🌟 介面魔法: 😊更多又漂亮又酷的表情符號   /  使用選項卡式視圖提高 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