Vba 从一张工作表中获取结果并将其移动到许多其他工作表中
我看过这个问题的类似答案,但无论我做什么,我都无法让他们做我需要的事情 我每天都有一封电子邮件,里面有一个CSV文件,提供我们销售团队前一天的通话统计数据。我需要的是将它们输入Excel,以提供今年的趋势和历史通话活动。如果没有VBA或宏,这是一个非常耗时的过程 它给出的统计数据是呼叫数和平均呼叫长度(这很重要),我已经用VBA计算了总的传出时间:Vba 从一张工作表中获取结果并将其移动到许多其他工作表中,vba,excel,csv,Vba,Excel,Csv,我看过这个问题的类似答案,但无论我做什么,我都无法让他们做我需要的事情 我每天都有一封电子邮件,里面有一个CSV文件,提供我们销售团队前一天的通话统计数据。我需要的是将它们输入Excel,以提供今年的趋势和历史通话活动。如果没有VBA或宏,这是一个非常耗时的过程 它给出的统计数据是呼叫数和平均呼叫长度(这很重要),我已经用VBA计算了总的传出时间: Dim Call_Number As Integer Dim Call_Time As Date Dim Call_Total As Date C
Dim Call_Number As Integer
Dim Call_Time As Date
Dim Call_Total As Date
Call_Number = .Cells(2, 6).Value
Call_Time = .Cells(2, 7).Value
Call_Total = Call_Number * Call_Time
.Cells(12, 7).Value = Call_Total
因此,我需要的是为每个销售成员提取3个单元格,并将它们移动到其相关表格中的正确位置,这些表格按名称分隔。如果目标单元格已满,我还需要将其移动到右侧的下一个单元格中,因此我认为我需要从1月1日开始粘贴过程,并一直移动到右侧,直到找到空白单元格。有没有一种方法可以通过按钮或自动完成
LastCol = WshtName.Cells(CrntRow, Columns.Count).End(xlToLeft).Column
我将第一张表用作数据导入表,我们只需将数据导入csv,因为它的标准格式,每天都将以正确的格式提供所有数据
到目前为止,我已经掌握了密码。它不会出错,但不会执行任何操作:
Sub Move_Data()
Dim Dean As Worksheet
Dim Chris As Worksheet
Dim Paul As Worksheet
Dim Nigel As Worksheet
Dim Calc As Worksheet
Dim Lastrow As Long
Dim J As Long
Dim i As Long
Set Dean = ThisWorkbook.Worksheets("DEAN 822")
Set Chris = ThisWorkbook.Worksheets("CHRIS 829")
Set Paul = ThisWorkbook.Worksheets("PAULP 830")
Set Nigel = ThisWorkbook.Worksheets("NIGEL 833")
Set RUSSELL = ThisWorkbook.Worksheets("RUSSELL 835")
Set Calc = ThisWorkbook.Worksheets("Calculation Sheet")
Lastrow = Range("C" & Dean.Columns.Count).End(xlToRight).Column
J = 2
For i = 0 To Lastrow
Set Rng = Dean.Range("C5").Offset(i, 0)
If Not (IsNull(Rng) Or IsEmpty(Rng)) Then
Calc.Cells(2, 4).Copy
Dean.Range("c" & J).PasteSpecial xlPasteValues
J = J + 1
End If
Next i
Application.CutCopyMode = False
End Sub
而不是
Lastrow = Range("C" & Dean.Columns.Count).End(xlToRight).Column
我想你想要
Lastrow = Range("C" & Dean.Columns.Count).End(xlUp).Row
“我还需要……在按钮中还是自动?” 将
LastCol
设置为行CrntRow中最后使用的列
我不确定这段代码在尝试什么 它将Rng设置为C5、C6、C7、C8、。。。到Cn,其中n是最后一行+5。例如,如果C5为空,则将C2复制到“计算单元(2,4)” 您的意思是将工作表Dean中的C列复制到工作表Calc的B列吗 如果清除空单元格并不重要,那么这将更快、更清晰:
Set Rng = Dean.Range(.Cells(5 ,"C"), .Cells(Lastrow ,"C"))
Rng.Copy Destination:=Calc.Cells(2, 4)
回应评论的新信息
我无法从您的描述中看到您的源数据或目标数据,因此无法给出任何具体建议
欢迎来到堆栈溢出。我相信这是一个查找以前发布的信息和发布新问题的好地方,但你必须遵守网站规则
顶部栏中间右侧是“帮助”按钮。单击此项并阅读如何使用此网站。了解如何发布一个问题,该问题将被归类为一个好问题,并将得到快速和有益的回答
我相信你的问题最大的三个问题是:
- 你要求太多了。你可以问很多你想问的好问题,但是每个问题应该只有一个问题
- 您要求提供已经可用的信息
- 你对自己的要求太含糊,不允许任何人帮忙。您说您希望每个员工移动三个值。但您不显示工作表“计算书”或工作人员工作表的排列方式。在获得较高声誉之前,您不能发布图像,但您可以使用代码工具创建工作表的“图形”
我希望以上内容能有所帮助。嘿,很抱歉回复得太晚,我刚刚有时间再次处理这个问题。回答您的问题:您的意思是将工作表Dean的C列复制到工作表Calc的B列吗?不,应该是相反的。让我澄清一下我的要求。我需要自动的
Set Rng = Dean.Range(.Cells(5 ,"C"), .Cells(Lastrow ,"C"))
Rng.Copy Destination:=Calc.Cells(2, 4)