需要VBA援助。试图选择一系列细胞,切割,移动和粘贴

时间:2011-02-03 14:38:16

标签: excel vba excel-vba excel-2003

我有一张每周更新的电子表格。我需要做的是切割细胞并粘贴到一个新的位置。我之前从未使用过宏或VBA,但是我对此花费的时间感到沮丧。我知道我可以使用宏但不知道如何编写它。

我正在尝试移动酒店的名称,并在乘客头衔的左侧使用

R81C00 CHALET LE VALENTIN SAUZE D'OULX

HAYHOE先生8

MR GLOVER 2

这在整个电子表格中重复。名称之间的行数取决于工作表中的更多信息。

546L
_ __ _ __ _ ___ 1度假村信息
__ _ __ _ __ _ _ 5 SKI / S.BOARD CARRIAGE
__ _ __ _ __ _ _8 AD L / P BRN BF 31/12/99

我想在这里做的是将这些线移动到与航班号相同的线上(这是与乘客详细信息相同的线),然后删除没有数据的线。这样所有细节都会在同一条线上,然后我只需要填写酒店名称。

提前感谢您的帮助,如果我没有清楚解释,请告诉我。

1 个答案:

答案 0 :(得分: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

如果我们从找到酒店/度假村组合开始,我们假设这是在单个单元格中A列的Sheet1上,而且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来跟踪哪一行我们正在检查该行(.Cells(lngCurrRow, 1).Value部分)中A列的单元格值。如果该单元格中存在某些内容(<> ""部分),则会显示该单元格的值。

更困难的情况是A列中有其他数据(例如,如果乘客姓名也在A栏中)。在这种情况下,我们需要一种方法来轻松识别什么是酒店/度假村组合以及什么是乘客名称但我没有足够的关于您当前结构的信息来确定如何做到这一点