Appears to be feasible.
To start, you could try with a variant of this http://www.vbaexpress.com/forum/show...gory-to-Folder .
Sub CopyMoveByCategory()
Dim olItems As Items
Dim olItem As Object
Dim i As Long
Dim copyMail As mailItem
Dim copyFlag As Boolean
Dim inboxFolder As Folder
Dim targetFolder As Folder
Set olItems = Session.GetDefaultFolder(olFolderInbox).Items
Set inboxFolder = Session.GetDefaultFolder(olFolderInbox)
For i = olItems.count To 1 Step -1
Set olItem = olItems(i)
If olItem.Class = olMail Then
'Debug.Print olItem.subject
copyFlag = False
' What series
Set targetFolder = inboxFolder.folders("1.2. What")
If InStr(olItem.Categories, "Budget") Then
Set targetFolder = targetFolder.folders("1.2.3. Budget")
Set copyMail = olItem.Copy
copyFlag = True
copyMail.move targetFolder
End If
' Who series
Set targetFolder = inboxFolder.folders("1.5. Who")
If InStr(olItem.Categories, "John") Then
Set targetFolder = targetFolder.folders("1.5.1. John")
Set copyMail = olItem.Copy
copyFlag = True
copyMail.move targetFolder
End If
If copyFlag = True Then
olItem.Delete
End If
End If
Next
ExitRoutine:
Set olItems = Nothing
Set olItem = Nothing
Set inboxFolder = Nothing
Set targetFolder = Nothing
Set copyMail = Nothing
End Sub
With more knowledge you could be more efficient. Perhaps an array for categories on the item instead of hardcoding the category, maybe a loop instead of hardcoding folder names.