按日期对多列进行重新排序和重新分组

时间:2020-09-25 07:03:00

标签: google-sheets google-sheets-formula vlookup array-formulas

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

这是我的数据:

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 |
+------------+----------+------------+------------------------------------+

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

提前谢谢!

最佳

2 个答案:

答案 0 :(得分: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,{1,2,3},FALSE)))}

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

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

答案 1 :(得分:0)

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

=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