Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复杂excel宏_Excel_Vba - Fatal编程技术网

复杂excel宏

复杂excel宏,excel,vba,Excel,Vba,我正在创建一个复杂的电子表格,在那里我可以根据每周的情况监控通过网络向不同客户拨打的电话。我有两张表,“原始数据”和“表1” 我将数据从服务器复制到“Sheet1”的垂直布局中,并运行一个宏来去除不必要的数据行 在“原始数据”中,应根据水平布局中的客户名称对呼叫量进行排序。我希望在这张表上至少有一个带有指定宏的按钮,该按钮将在A列中搜索下一个可用单元格,插入新行,在序列中添加下一个日期(2012年3月19日,2012年3月26日,…),最后从“Sheet1”复制数据并将值粘贴到正确的列标题下(我

我正在创建一个复杂的电子表格,在那里我可以根据每周的情况监控通过网络向不同客户拨打的电话。我有两张表,“原始数据”和“表1”

我将数据从服务器复制到“Sheet1”的垂直布局中,并运行一个宏来去除不必要的数据行

在“原始数据”中,应根据水平布局中的客户名称对呼叫量进行排序。我希望在这张表上至少有一个带有指定宏的按钮,该按钮将在A列中搜索下一个可用单元格,插入新行,在序列中添加下一个日期(2012年3月19日,2012年3月26日,…),最后从“Sheet1”复制数据并将值粘贴到正确的列标题下(我想删除“Sheet1”的内容)然后,将值保留在“原始数据”中

我知道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上的一列中搜索特定的文本字符串(原始数据的标题)复制该行中的值,该值位于代码生成的日期(如上)下。我可能会使用类似于上面的代码或嵌套的if语句,但工作表1中的值将每周删除一次。这是可能的还是我只是在脑子里想出来的?

标记,如果数据不是表格格式(即它不是
列表对象
,则无需插入行)您可以简单地写入最后一行。要将数据写入最后一行,您可以使用类似的方法

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
然后,如果需要,可以对日期列上的数据进行排序

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


Sid

请尝试结束(XLdown)以进入下一个空白行。马克,这确实很难理解。如果需要,可以编辑问题,然后将代码张贴在那里:)