我正在创建一个复杂的电子表格,我可以根据每周通过我们的网络监控不同客户的电话。我有两张纸,“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语句,但是第一张表中的值将每周删除一次。这是可能的还是我只是在脑海中梦想着它?
答案 0 :(得分:2)
标记,如果数据不是表格格式(即它不是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
HTH
西特