簡體   English   中英

VBA Excel-如何在兩個粗體單元格之間排序

[英]VBA Excel - How to sort between two bold cells

在Excel中,我們有一個項目管理文件,其中將不同的任務分配給不同的項目和日期。

每個項目的第一個任務均以粗體顯示 ,同一項目的其他所有條目都是常規的。 然后,再次添加其他任務時,第一個條目為粗體,其余條目為常規。

問題是直到現在,任務的日期都被完全忽略了。 它們幾乎只是按項目和它們添加到數據庫的順序排序。

現在,我可以按日期對它進行排序,但是我將丟失按項目進行的排序,這也非常重要。 我需要找到一種方法來保持任務按項目排序,除此之外,還應按日期對其進行排序。

在excel中,條目如下所示:

在此處輸入圖片說明

(由於明顯的原因,無法向您顯示其余部分。在此示例中,行是有序的,但這僅是因為員工手動按順序添加了它們。其他員工通常會忽略他們執行特定任務的日期,而只是添加它們他們如何記得)

因此,我要做的是瀏覽每個工作表,並按“開始”列的內容對行進行排序。 首先,我想對包含粗體字母的兩個單元格之間的所有內容進行排序。 之后,我想重新排列按日期排序的行的“組”。 這樣,整個項目也會按日期排序。

我以前的所有嘗試要么都整理了所有內容並失去了項目順序,要么根本沒有做任何事情。 我是一個編程的新手。

我很樂意提供任何小費或幫助。

提前致謝

編輯:

這是一個更大的樣本。 很遺憾,我無法發布任何文件。 列是固定的,行的數量因員工而異。 有些短兩排,有些一直排到第50行。

同樣,問題是例如對項目STACKOVERFLOW111下的任務進行排序,然后對項目STACKOVERFLOW222下的任務進行排序,然后再次對大型“組”進行排序,而不會將它們混合在一起。

[ 在此處輸入圖片說明

在最后一個截圖示例之后進行了編輯

你可以試試這個

Option Explicit

Sub main()
Dim dataRng As Range
Dim sortCol As Long, helperCol As Long

Set dataRng = ActiveSheet.Range("B4:H11") '.SpecialCells(xlCellTypeConstants)
sortCol = 6 '<<==  "Start" dates column is column "F" -> column index 6
With dataRng
    helperCol = .Columns(.Columns.Count).Column + 1
    Names.Add name:="bolds", refersTo:="=GET.CELL(20,OFFSET(INDIRECT(""RC"",FALSE),0,-" & helperCol - sortCol & "))"
    With .Offset(, helperCol - .Columns(1).Column).Resize(, 1)
        .FormulaR1C1 = "=if(bolds,RC" & sortCol & ","""")"
        .Offset(, 1).FormulaR1C1 = "=if(RC[-1]<>"""", RC[-1] + countif(R1C[-1]:R[-1]C[-1],RC[-1])*0.01,R[-1]C+0.0001)"
    End With
    .Resize(, .Columns.Count + 2).Sort key1:=.Columns(.Columns.Count + 2), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlNo
    .Columns(.Columns.Count + 1).Resize(, 2).Clear
End With

End Sub

有以下警告

  • 它利用了Names集合。 因此,它第一次運行時會設置一個名為“ bolds”的“名稱”,該名稱可以在整個工作簿中使用。

  • 它利用了“ GET.CELL”函數,該函數是“舊” Excel 4.0宏語言中的宏函數。 在我的Excel 2013中,它可以工作!

  • 我假設您有少於100個相等的“開始”日期,並且每個“開始”日期都具有少於100個“子”日期。 如果不是這樣,則可以通過在行.Offset(, 1).FormulaR1C1 =...的最后一部分中編輯0.010.0001來輕松地擴大“容量” .Offset(, 1).FormulaR1C1 =...

  • 如您所見,在執行過程中逐步執行代碼,它使用兩個“幫助程序”列來構建排序索引,這些索引最終會被刪除。

暫無
暫無

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

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