2015-08-13 43 views
2

,那麼您可以編寫一個腳本來執行此功能。我有一長串包含大量列的數據。這些列的名稱都有「Person_1_Date」,「Person_1_Name」,「Person_2_Name」,「Person_2_Date」等。在VBA中,如果一個單元格包含某些文本,並且將範圍設置爲列

我正在嘗試編寫一個腳本,用於爲每個人(Person_1,Person_2)並按特定順序(日期,名稱,日期,名稱,而不是日期,名稱,名稱,日期,因爲它在這裏)重新排列它們。

我試驗的粗略部分腳本看起來像以下至今:

Sub Test() 
Dim Rng As Range 
Dim k As Long 
Set Rng = Columns("B:B") 
    For k = Columns("B").Column To Columns("DE").Column Step 1 
     If (IsNumber(Search("Person_x_Date", "k" & 1)) Then 'Looking to make this get called if the Search comes back with a number' 
     Columns("k:k").Cut 
     Rng.Selection.Insert Shift:=xlToRight 
    Next k 
    End Sub 

有幾件事情我在尋找的幫助是否有可能寫一個搜索功能,將尋找一個什麼樣的細胞中的部分,而忽略另一個?用Person_x_Date我希望能找到一個單元代替x的單元,所以它可以找到Person_1_Date,Person_2_Date等。這可能嗎?

其餘的是一團糟。實質上,我想將範圍設置爲整個列,如果搜索找到某些內容,它會將其複製並粘貼到正確的位置,然後再繼續,直到找到接下來應該出現的內容(如Person_X_Date)。

我知道我寫的代碼的後半部分與此相距甚遠。我只是尋找任何建議來幫助我把它們放在一起。

+0

是它始終是一個單元都有一個的情況下人名,然後是下劃線,然後是一些數字,然後是另一個下劃線,然後是日期? –

回答

3

請注意,excel排序可以水平完成(大多數人只是垂直使用它)。

這實際上允許您根據行中的值對列進行排序。 (正常的垂直排序將根據列中的值對行進行排序)。

在排序對話框中,單擊選項按鈕選擇水平排序。

我認爲這實際上會給你你需要的東西。

但是,如果你需要操作的數據值,你可以創建一個公式列改變值,然後排序上的公式行中的數據..

+1

注意:我認爲使用VBA進行橫向排序可能是您需要做的第一件事,那麼您可以根據需要修改列的順序。這取決於你的數據值, – HarveyFrench

+0

哇,我不敢相信我以前沒有想到這個。太感謝了! – user1996971

+1

PS。如果您需要操作數據值,請創建公式行,然後更改這些值,然後對公式行中的數據進行排序。 – HarveyFrench

相關問題