2011-02-03 76 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中)。在这种情况下,我们需要一种方法来轻松识别什么是酒店/度假村组合,什么是乘客姓名,但我没有足够的信息来了解您当前的结构以确定如何做到这一点