我正在创建一个复杂的电子表格,在这里,我可以根据网络监视每周通过电话打给不同客户的电话。我有两张纸,“ raw_data”和“ Sheet1”。

我将数据从服务器复制到“ Sheet1”,并放入垂直布局,然后运行一个宏,该宏将剥离不必要的数据行。

然后在“原始数据”中,应根据客户名称在水平布局中对呼叫量进行排序。我在此工作表上想要的是至少一个带有分配的宏的按钮,该宏将在A列中搜索下一个空闲单元格,插入新行,并在序列中添加下一个日期(19/03/2012,26/03 / 2012,...),最后从“ Sheet1”复制数据,并将值粘贴到正确的列标题下(然后,我想删除“ Sheet1”的内容,但将值保留在“ raw_data”中)。

我知道VBA会在特定点插入新行,而不是在长列表的末尾插入新行。这是我的代码:

Sub Insertrow()
    Rows("33:33").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub


任何帮助都将非常有用,甚至相似的示例也将非常有用,因此我可以自己编辑它们以便学习。

谢谢!

标记

更新

我似乎无法以正确的格式将代码添加到注释中。所以这里又来了...

Sub Insertrow()
        'Selects next empty cell in column A
        ActiveWindow.ScrollRow = 2
        Range("A2").Select
        Selection.End(xlDown).Offset(1, 0).Select
        'Inputs the next date
        Dim n As Long, k As Long
        Application.ScreenUpdating = False
        Rng = 1
        Range(ActiveCell, ActiveCell.Offset(Val(Rng) - 1, 0)).EntireRow.Insert
        k = ActiveCell.Offset(-1, 0).Row
        'copies the formula 1 cell from the left (Column A) to the row below
        n = Cells(k, 1).End(xlToLeft).Column
        Range(Cells(k, 1), Cells(k + Val(Rng), n)).FillDown
End Sub


我现在想做的是在Sheet1上的一列中搜索特定的文本字符串(raw_data的标题),复制该行中的值,该值低于从代码生成的日期(上述)。我可能会使用类似于上面的代码或嵌套的if语句,但是工作表1中的值将每周删除一次。这可能吗?还是我只是在脑海里做梦呢?

最佳答案

标记,如果数据不是表格格式(即它不是listobject,则不需要插入该行),则可以简单地写入最后一行。要将数据写入最后一行,您可以使用类似以下的内容

Sub Sample()
    Dim ws As Worksheet
    Dim wslRow As Long

    Set ws = Sheets("Sheet1")

    wslRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row + 1

    ws.Range.Range("A" & wslRow).Value = "Blah Blah"
End Sub


然后,可以根据需要对日期列上的数据进行排序。

如果数据采用表格格式,则可以使用此技术,然后对数据进行排序。

Runtime error '91' on macro execution

高温超导

席德

关于excel - 复杂的Excel宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10009887/

10-10 18:55