按日期对多列进行重新排序和重新分组 您可以使用一个公式

问题描述

我对此有些困惑,希望对此有所帮助:)

这是我的数据:

Option Explicit

Sub Sample()
    Dim OutlookApp As Object
    Dim OutlookMail As Object

    Set OutlookApp = CreateObject("outlook.application")
    Set OutlookMail = OutlookApp.ActiveExplorer.Selection.Item(1)
    
    '~~> Get MailItem.GetConversation method (Outlook)
    ' https://docs.microsoft.com/en-us/office/vba/apI/Outlook.mailitem.getconversation
    Dim OutlookConversation As Object
    Set OutlookConversation = OutlookMail.GetConversation

    '~~> Conversation.GetTable method (Outlook)
    ' https://docs.microsoft.com/en-us/office/vba/apI/Outlook.conversation.gettable
    Dim OutlookTable As Object
    Set OutlookTable = OutlookConversation.GetTable
    
    '~~> Obtains a 2D array from the Table.
    ' https://docs.microsoft.com/en-us/office/vba/apI/Outlook.table.getarray
    Dim OutlookAr As Variant
    OutlookAr = OutlookTable.GetArray(OutlookTable.GetRowCount)
    
    Dim OutlookReplyToThisMail As Object
    Set OutlookReplyToThisMail = OutlookMail.Session.GetItemFromID(OutlookAr(UBound(OutlookAr),0))
    
    Dim MyMessage As String: MyMessage = "Hi,have a nice day "
    
    With OutlookReplyToThisMail.ReplyAll
        .BCC = "XYZ.com"
        .HTMLBody = MyMessage & .HTMLBody
        .display
    End With
End Sub

我正在按这样的日期将结果分组(一个日期=一行):

+--- Col A --+- Col B --+-- Col C ---+--- Col D --+- Col E --+-- Col F ---+
|                FRANCE              |               ITALY                |
|     DATE   | Installs | Uninstalls |    DATE    | Installs | Uninstalls |
+---+----------------+----------------------------------------------------+
| 14/09/2020 |        1 |          2 | 14/09/2020 |        1 |          2 |
| 15/09/2020 |        3 |          1 | 17/09/2020 |        4 |          1 |
| 16/09/2020 |        1 |          2 | 22/09/2020 |        1 |          2 |
| 22/09/2020 |        3 |          1 | 26/09/2020 |        4 |          1 |
+------------+----------+------------+------------------------------------+

我熟悉查询,但是很难找到正确的公式:(

提前谢谢!

最佳

解决方法

your comment中您提到

我的真实数据集中有更多国家/地区,都采用相同的格式(DATE | INSTALLS | UNINSTALLS)

您可以使用一个公式

={ArrayFormula(IFERROR(VLOOKUP(UNIQUE(SORT({A3:A;D3:D})),A3:C,{1,2,3},FALSE))),ArrayFormula(IFERROR(VLOOKUP(UNIQUE(SORT({A3:A;D3:D})),D3:F,FALSE)))}

您可以通过更改为下一组G3:I并使用以下逻辑添加arrayformula部分来添加下一个国家/地区:

={ArrayFormula(...),ArrayFormula(...),ArrayFormula(...)}
,

您可以通过以下方式恢复所有日期:

=UNIQUE(SORT({A1:A4;D1:D4}))

然后您可以通过以下方式提取法国的相应安装:

=ArrayFormula(IFERROR(VLOOKUP(UNIQUE(SORT({$A$1:$A$4;$D$1:$D$4}));$A$1:$C$4;2;FALSE)))

然后通过将2替换为3可以卸载。对于意大利,您可以将$A$1:$C$4替换为$D$1:$F4$

enter image description here