簡體   English   中英

如何對一列數據進行排序並匹配另一列數據,其中某些單元格已在 Excel 中合並

[英]How to sort one column data and match to another column data with some cells was merged in Excel

我正在嘗試對一個列數據進行排序並與 Excel 2013 中的另一列數據匹配。我不知道如何解釋更多,因為我真的是使用 excel 的業余愛好者,所以我有這樣的表格:

|Date      | Technician |    Task    |
|----------|------------|------------|
|01/01/2020|          CLOSED         |
|02/01/2020|Cindy       |Check       |
|02/01/2020|Cindy       |Repair      |
|03/01/2020|Cindy       |Check       |
|03/01/2020|Cindy       |Maintenance |
|04/01/2020|Joe         |Repair      |
|05/01/2020|          CLOSED         |
|06/01/2020|Joe         |Maintenance |
|06/01/2020|Steph       |Check       |

我試圖像這樣排序和匹配:

|Date      | Technician |    Task    |
|----------|------------|------------|
|01/01/2020|          CLOSED         |
|02/01/2020|Cindy       |Check       |
|02/01/2020|Cindy       |Check       |
|03/01/2020|Cindy       |Maintenance |
|03/01/2020|Cindy       |Repair      |
|04/01/2020|Joe         |Maintenance |
|05/01/2020|          CLOSED         |
|06/01/2020|Joe         |Repair      |
|06/01/2020|Steph       |Check       |

通常我使用數據庫 sql,如果它在 SQL 查詢中,它應該是:

select technician, task from employee order by technician, task asc;

但是現在我不使用數據庫sql,只是excel。 希望有人能幫助我,也為我的英語感到抱歉。

歡迎來到 SO。 這一切都可以使用 Excel 公式(根據您的excel-formula標簽),但我認為最簡單的方法是實際使用本機 Excel 功能。

第 1 步- 選擇您的數據(我假設您的數據存儲在單元格 A1:B8 中)

第 2 步- 轉到Home > Sort & Filter > Custom Sort... - 選中“我的數據有標題”選項並添加第一級(技術員),然后使用“添加級”按鈕並添加第二級(任務):

在此處輸入圖片說明

這是你的最終結果:

在此處輸入圖片說明

編輯- 為了取消合並 B 列中的所有單元格,您需要運行以下代碼:

Sub UnMergeCells()
    Dim lngRows             As Long
    Dim lngRow              As Long

    With Sheets("Sheet1")
        lngRows = .UsedRange.Rows.Count

        For lngRow = 2 To lngRows
            If .Range("B" & lngRow).MergeCells Then
                .Range("B" & lngRow).MergeArea.UnMerge
            End If
        Next lngRow
    End With
End Sub

然后,您可以按照我在原始帖子(“自定義排序”)中描述的三個步驟進行操作。 完成后,您可以通過運行以下代碼將所有單元格合並回之前的狀態:

Sub MergeCells()
    Dim lngRows             As Long
    Dim lngRow              As Long

    With Sheets("Sheet1")
        lngRows = .UsedRange.Rows.Count

        For lngRow = 2 To lngRows
            If .Range("B" & lngRow).Value = "CLOSED" Then
                .Range("B" & lngRow & ":C" & lngRow).Merge
            End If
        Next lngRow
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM