2011-02-03 41 views
0

我有一個每週更新的電子表格。我需要做的是切掉單元格並粘貼到新的位置。我以前從未使用過宏或VBA,但是我花了很多時間去做這件事而感到沮喪。我知道我可以使用宏,但不知道如何編寫它。需要VBA援助。試圖選擇一個單元格範圍,剪切,移動和粘貼

我想給酒店和度假村的名字移動到乘客標題左側

R81C00木屋LE VALENTIN索茲科特迪瓦烏爾克斯

MR海霍8

MR GLOVER 2

重複整個電子表格。名稱之間的行數取決於表單中更右側的信息。

546L
_ __ _ __ _ ___1個度假村信息
__ _ __ _ __ _ _5 SKI/S.BOARD CARRIAGE
__ _ __ _ __ _ 3-8 AD L/P BRN BF 31/12/99

我想在這裏做的是將這些線到同一行的航班號(這是與乘客詳細信息相同的行),然後刪除沒有數據的行。這樣所有的細節將在同一行,然後我只需要填寫酒店名稱。

在此先感謝您的幫助,請讓我知道,如果我沒有解釋清楚。

+0

這可以很容易地完成。你寫了宏有多遠? – ThomasMcLeod 2011-02-03 20:07:02

回答

0

試圖保持這種通常足夠使用其他人的,基本的過程中遵循將是:

find the next hotel/resort combination 
    find each passenger for that hotel/resort 
    add in the details for the other attributes 
    move on to the next passenger 
move on to the next hotel/resort 

如果我們開始找到酒店/度假村的組合,我們認爲這是對在工作表Sheet1中的一個單元格,並且沒有別的列A是A列中那麼我們就需要這個宏:

Option Explicit 

Sub main() 

Dim lngCurrRow As Long 
Dim lngMaxRow As Long 

With ThisWorkbook.Worksheets("Sheet1") 
    lngMaxRow = .UsedRange.Rows.Count 

    For lngCurrRow = 1 To lngMaxRow 
     If (.Cells(lngCurrRow, 1).Value <> "") Then 
      MsgBox .Cells(lngCurrRow, 1).Value 
     End If 
    Next lngCurrRow 
End With 

End Sub 

這應該彈出一個消息框,依次每家酒店/度假村的名字。

所有代碼都會計算出工作表上存在多少使用的行(並將其存儲在lngMaxRow中),然後遍歷每個使用的行(使用lngCurrRow來跟蹤我們所在的行),檢查值在該行的列A中的單元格(.Cells(lngCurrRow, 1).Value部分)。如果在該單元格中有東西(<> ""部分),則顯示該單元格的值

更困難的情況是當列A中有其他數據時(例如,如果乘客名稱也在列A中)。在這種情況下,我們需要一種方法來輕鬆識別什麼是酒店/度假村組合,什麼是乘客姓名,但我沒有足夠的信息來了解您當前的結構以確定如何做到這一點