利用excel的vba代码实现自动化“收集原始数据、汇总计算和报表”

合集下载

如何在Excel中运用宏实现自动化计算及分析

如何在Excel中运用宏实现自动化计算及分析

如何在Excel中运用宏实现自动化计算及分析?Excel是一款广泛应用的电子表格软件,它具有简单易用、功能强大等优点,成为许多人进行数据处理、分析和管理的首选工具。

其中,运用宏实现自动化计算及分析是Excel的一项重要功能之一,可以帮助人们更便捷地处理大量数据,提高工作效率。

本文将从如何编写宏、如何运用宏、如何解决常见问题等方面,介绍如何在Excel中运用宏实现自动化计算及分析。

一、如何编写宏宏是一段基于Visual Basic for Applications(VBA)编写的代码,其功能是将一系列既定的操作封装成一个命令,然后可以通过触发该命令来实现一系列的操作步骤。

编写宏的过程如下:1.打开Excel,新建一个工作簿。

2.在“开发”菜单栏中选择“Visual Basic”,打开VisualBasic编辑器。

3.在编辑器中,点击“插入”选项,选择模块,然后在模块中编写代码。

代码格式可参考下面的示例(本示例是用来计算某一列数据的平均值):Sub Average()Range("B1").SelectActiveCell.FormulaR1C1 = "=AVERAGE(R[1]C:R[6]C)"End Sub4.保存宏,命名为“Average”,然后关闭编辑器。

二、如何运用宏编写好宏之后,如何进行运用呢?这涉及到宏的调用和触发方式。

具体步骤如下:1.打开你需要应用宏的Excel工作簿,在打开的工作簿中按下“Alt + F8”快捷键。

2.打开“Macros”对话框,找到你编写的宏,选择并点击“Run”按钮,即可运行你编写的宏。

三、如何解决常见问题但是,在运用宏的过程中,会遇到各种问题,需要进行故障排除。

下面具体介绍几个常见问题及解决方法:1.代码无效或错误:这种情况通常和代码的语法有关。

可以检查语法错误,比较源代码与正确代码的区别。

2.宏无法运行:有些宏可能需要以管理员身份运行,这时需要右键单击Excel图标并以“管理员身份”重新启动Excel。

通过VBA实现Excel数据报表的制作方法

通过VBA实现Excel数据报表的制作方法

通过VBA实现Excel数据报表的制作方法Excel是一个功能强大的电子表格应用程序,可以用来处理和分析数据。

在Excel中,使用VBA(Visual Basic for Applications)语言可以自动化执行各种任务和操作。

通过VBA,我们可以实现Excel数据报表的制作方法,提高工作效率和准确性。

本文将介绍通过VBA实现Excel数据报表的步骤和技巧。

首先,需要了解VBA编程语言的基本知识。

VBA是一种基于Microsoft Visual Basic的编程语言,可以用于编写Excel宏。

在Excel菜单栏上,选择“开发”选项卡,然后点击“Visual Basic”图标,即可进入VBA编辑器。

在VBA编辑器中,可以编写和编辑宏代码。

接下来,我们将探讨几种常用的VBA编程技巧,以实现Excel数据报表的制作方法。

第一种方法是使用VBA自动创建并格式化表格。

在VBA编辑器中,可以使用Range对象和Cells属性来指定单元格范围和位置。

例如,可以使用Cells(row, column)来指定特定单元格的位置,并使用Range("A1:G10")来指定一个单元格区域。

通过设置单元格的值、字体、颜色等属性,可以实现表格的自动创建和格式化。

第二种方法是使用VBA自动填充数据。

通过循环和条件语句,在VBA中可以自动获取数据源,并将数据填充到指定的单元格中。

例如,可以使用For循环来遍历数据源,并使用If语句来判断数据的条件,然后将符合条件的数据填充到相应的单元格中。

这样可以快速、准确地填充大量数据。

第三种方法是使用VBA自动计算和统计数据。

通过对数据进行加减乘除等运算,并使用函数来进行统计和分析,可以实现数据报表的自动计算。

例如,可以使用Sum函数来计算一列数据的总和,使用Average函数来计算平均值,使用Count函数来统计某个条件下的数据数量等。

通过编写相应的VBA代码,可以根据需要自动计算和统计各种数据指标。

Excel高级技巧利用宏实现自动化数据处理

Excel高级技巧利用宏实现自动化数据处理

Excel高级技巧利用宏实现自动化数据处理Excel是一款强大的电子表格软件,广泛应用于数据分析、报表制作等领域。

在日常使用Excel的过程中,我们经常需要处理大量的数据,并且可能需要进行重复的操作。

为了提高工作效率,Excel的宏功能为我们提供了自动化数据处理的利器。

本文将介绍一些Excel高级技巧,并讲解如何利用宏实现自动化数据处理。

一、VBA简介VBA(Visual Basic for Applications)是一种用于编写宏的编程语言,可以实现Excel中的自动化操作。

通过VBA,我们可以编写一些程序代码,对Excel的各个功能进行扩展和自定义。

二、宏的录制与运行1. 录制宏要录制一个宏,我们可以按下Alt+F11快捷键,打开Visual Basicfor Applications编辑器。

然后选择“插入”-“模块”,在模块窗口中编写代码。

接下来,我们选择“开发”-“宏”-“录制新宏”,在弹出的对话框中填写宏的名称和快捷键,点击“确定”开始录制。

此时,我们可以执行一系列的操作,Excel会自动将这些操作转换为VBA代码。

2. 运行宏录制完宏后,我们可以使用快捷键或者点击“开发”-“宏”-“运行”来执行宏。

当宏运行时,Excel会按照我们录制的操作步骤来自动执行。

三、Excel高级技巧1. 数据透视表数据透视表是Excel中非常实用的数据分析工具。

它可以根据需要对原始数据进行汇总、统计和分析,并生成清晰的报表。

通过使用数据透视表,我们可以轻松地实现数据的分组、汇总、筛选等操作。

2. 条件格式条件格式可以根据指定的条件对单元格进行格式化。

比如,我们可以根据单元格的数值大小、文本内容等来设置不同的背景颜色、字体样式等。

通过使用条件格式,我们可以迅速发现并分析数据中的异常情况,提高数据处理的效率。

3. 函数嵌套Excel中有很多内置函数,如SUM、AVERAGE、IF等。

通过将这些函数进行嵌套,我们可以实现更复杂的计算和数据处理操作。

Excel高级功能使用宏和VBA实现自动化报表生成

Excel高级功能使用宏和VBA实现自动化报表生成

Excel高级功能使用宏和VBA实现自动化报表生成Excel是一款功能强大的电子表格软件,广泛应用于各个行业中的数据处理和分析工作。

对于需要频繁生成报表的人员来说,手动填写数据和调整格式可能会耗费大量时间和精力。

为了提高工作效率,Excel提供了宏和VBA(Visual Basic for Applications)功能,可以帮助用户实现自动化报表生成。

本文将介绍Excel高级功能的使用方法,并演示如何通过宏和VBA编程实现自动化报表生成。

一、宏的使用方法宏是Excel内置的一个录制和回放功能,可以记录用户在电子表格中的操作过程,并将其转化为一系列可重复执行的命令。

以下是宏的基本使用方法:1. 启用开发工具栏:首先要确保开发工具栏在Excel中可见。

如果没有显示,可以通过点击菜单栏的“文件”-“选项”-“自定义功能区”-“主选项卡”-“开发工具”来启用开发工具栏。

2. 录制宏:打开一个Excel工作簿后,点击开发工具栏中的“宏录制器”按钮,弹出宏录制器窗口。

在窗口中输入宏名称,并点击“确定”按钮开始录制。

3. 执行操作:在开始录制宏后,进行需要自动化的操作,包括数据输入、公式计算、表格格式调整等。

4. 停止录制宏:完成操作后,点击开发工具栏中的“停止录制”按钮,宏录制器会自动停止并保存宏代码。

5. 运行宏:保存宏之后,可以通过点击开发工具栏中的“宏”按钮,选择宏名称并点击“运行”按钮来执行宏。

二、VBA编程实现自动化报表生成除了宏的录制和回放功能外,Excel还提供了VBA编程功能,可以通过编写代码来实现更加复杂的功能和逻辑。

以下是通过VBA实现自动化报表生成的步骤:1. 打开VBA编辑器:点击开发工具栏中的“Visual Basic”按钮,打开VBA编辑器窗口。

2. 创建宏:在VBA编辑器中,点击菜单栏的“插入”-“模块”,创建一个新的模块。

3. 编写VBA代码:在新建的模块中,编写VBA代码实现报表生成的逻辑。

Excel高级技巧使用宏和VBA编程实现数据处理和汇总

Excel高级技巧使用宏和VBA编程实现数据处理和汇总

Excel高级技巧使用宏和VBA编程实现数据处理和汇总Excel高级技巧:使用宏和VBA编程实现数据处理和汇总Excel是一款功能强大、灵活多变的电子表格软件,广泛应用于数据处理、汇总和分析等领域。

在日常工作中,我们经常需要处理大量的数据,繁琐的操作可能会消耗大量的时间和精力。

而Excel的宏和VBA编程技巧能够帮助我们自动化处理数据,提高工作效率。

本文将介绍如何使用宏和VBA编程实现数据处理和汇总,以及一些实用技巧。

一、宏的基本概念和使用方法Excel宏是指一系列预先录制的操作步骤,可以保存起来并重复运行,从而自动执行这些操作。

通过录制宏,我们可以将重复性的操作转化为简单的命令,大大减少了手动输入的工作量。

下面是如何录制宏的基本步骤:首先,打开Excel并选择“开发工具”选项卡(如果找不到该选项卡,可以在“选项”中启用它);然后,点击“宏”按钮,选择“录制新宏”;在弹出的窗口中,为宏命名,并选择保存宏的位置(建议选择“个人宏工作簿”,这样宏可以在任何工作簿中使用);开始录制宏,并按照需要执行各种操作;完成操作后,停止录制宏;现在,可以通过按下快捷键、添加按钮或者右键菜单等方式运行刚才录制的宏。

二、VBA编程实现高级数据处理除了录制宏,我们还可以使用VBA编程语言对Excel进行更加灵活和复杂的自定义操作。

下面是一个使用VBA编程实现数据处理和汇总的示例:首先,按下Alt+F11,打开Visual Basic for Applications(VBA)编辑器;选择插入菜单中的模块,在弹出的代码窗口中编写VBA代码;以下是一个简单的VBA代码实例,用于对数据进行汇总和筛选:```Sub DataProcessing()'定义变量Dim rng As RangeDim cell As RangeDim sumValue As Double'设置处理范围Set rng = Range("A1:A100")'初始化累加值sumValue = 0'循环处理每个单元格For Each cell In rng'判断条件,累加数值If cell.Value > 0 ThensumValue = sumValue + cell.ValueEnd IfNext cell'在指定位置输出结果Range("B1").Value = sumValueEnd Sub```以上代码首先定义了一个变量rng,用于指定处理数据的范围。

利用Excel的宏实现自动化数据分析与报告生成

利用Excel的宏实现自动化数据分析与报告生成

利用Excel的宏实现自动化数据分析与报告生成每天大量的数据被产生和记录,其中包含了各种各样的信息。

对这些信息进行整理和分析,对于企业和个人来说都是非常重要的。

然而,手动处理这些数据是非常耗时且容易出错的。

在这种情况下,利用Excel的宏可以帮助我们实现自动化数据分析和报告生成,大大提高工作效率和准确性。

一、Excel宏的定义和作用Excel宏是一种自定义的程序代码,可以以VBA(Visual Basic for Applications)的形式编写在Excel中运行。

宏可以自动化执行各种任务,比如处理数据、运行复杂的计算公式、生成图表和报告等等。

通过使用宏,我们可以减少手动操作,节省时间,并且降低出错的概率。

二、如何创建Excel宏1. 打开Excel,并导航到“开发工具”选项卡。

2. 点击“宏”按钮,弹出“创建宏”对话框。

3. 输入宏的名称,选择一个快捷键(可选),并点击“创建”按钮。

4. 接下来,会打开一个VBA编辑器窗口,可以在其中编写宏的代码。

三、自动化数据分析Excel宏可以帮助我们自动进行数据分析,下面以销售数据为例来说明。

假设我们有一个包含了大量销售数据的Excel表格,我们需要计算每个月的销售总额,并生成一个报表。

我们可以利用宏来完成以下任务:1. 定义变量和数组:在宏中定义变量和数组来存储数据。

2. 导入数据:将Excel表格中的销售数据导入到宏中的变量和数组中。

3. 分析数据:使用宏来分析数据,计算每个月的销售总额。

4. 生成报表:将分析结果以表格或图表的形式生成报表。

通过编写宏的代码,我们可以自动化执行这些任务,并且可以随时根据需要进行调整和修改。

四、自动化报告生成除了自动化数据分析,Excel宏还可以帮助我们生成各种形式的报告。

下面以项目进度报告为例来说明。

假设我们有一个包含了项目进度数据的Excel表格,我们需要根据这些数据生成一个项目进度报告。

我们可以利用宏来完成以下任务:1. 读取数据:将Excel表格中的项目进度数据导入到宏中的变量和数组中。

Excel高级技巧使用VBA宏实现自动化数据分析与报表生成

Excel高级技巧使用VBA宏实现自动化数据分析与报表生成

Excel高级技巧使用VBA宏实现自动化数据分析与报表生成Excel作为一款广泛应用于数据处理和分析的工具,其强大的数据计算和图表功能深受用户喜爱。

然而,在处理大量数据和生成复杂报表时,手动操作往往会耗费大量时间和精力。

这时候,借助Excel的高级技巧和VBA宏的自动化功能,我们能够实现快速、准确的数据分析和报表生成,提高工作效率。

一、利用VBA宏简化数据分析在Excel中,数据分析是一项重要任务。

而借助VBA宏,我们可以通过编写一段自动化的代码来实现各种复杂数据分析任务的自动化处理。

以下是几个常见的示例:1. 数据筛选:VBA宏可以根据指定的条件自动筛选数据,使得数据分析更加精准和高效。

通过编写一段宏代码,设置筛选条件,并将结果输出到指定位置,实现数据的自动筛选。

2. 数据透视表:通过VBA宏,我们可以自动创建和更新数据透视表。

可以通过编写宏代码,自动将新的数据源添加到透视表中,并刷新透视表的数据,使其保持最新和准确。

3. 数据汇总和统计:VBA宏可以用于自动汇总和统计数据。

对于大量数据的处理,可以通过编写宏代码,自动计算各种统计指标,如平均值、总和、最大值、最小值等,并将结果输出到指定单元格中。

二、利用VBA宏实现报表生成在Excel中,报表的生成是一项重要的任务。

通过使用VBA宏,我们可以轻松实现自动化报表的生成和更新。

以下是几个常见的示例:1. 图表生成:借助VBA宏,可以自动创建和更新各种复杂的图表。

通过编写宏代码,根据指定的数据范围和类型,自动生成图表,并设置合适的样式和格式。

2. 报表模板:通过编写VBA宏,可以创建一套报表模板,并实现动态数据导入和更新。

当新的数据添加到工作簿中时,宏代码会自动将数据导入到报表中,并根据需要进行格式和样式的调整。

3. 报表导出:VBA宏还可以实现将报表导出为其他格式,如PDF、Word文档等。

通过编写宏代码,将报表按照指定的格式导出,并保存到指定的位置,方便与他人共享和使用。

利用excelVBA进行自动化数据分析,数据汇总,网页表单自动提交等功能

利用excelVBA进行自动化数据分析,数据汇总,网页表单自动提交等功能

利用excelVBA进行自动化数据分析,数据汇总,网页表单自动提交等功能利用excel VBA进行自动化数据分析,数据汇总,网页表单自动提交等功能在制造业公司的生产管理,经营管理,采购管理,财务管理等工作中,都有大量的数据处理的任务,通过繁复的excel手工运算获取结果。

通过员工培训和自我提升,掌握和使用excel数组公式和VBA自动化,能为员工节省巨大的时间和精力,提高工作附加值。

同时作为公司效率化和系统化改善的一部分,为公司效益带来显著提升。

以下通过一些案例,展示利用excel公式和VBA进行自动化数据分析,数据汇总,网页表单自动提交在实际场景中的典型应用。

相关的文件和代码可以在github下载。

•自动化数据分析以下是通过VBA自动化数据分析来计算预计在手和在途库存的流程。

以下是预计在手和在途库存的代码。

Sub 预计在手和在途()'' 预计在手和在途宏'SCH_IDITEM_NO (7)SCH_IDITEM_NO (11)SCH_IDITEM_NO (21)P = ActiveWorkbook.PathColumns("C:C").SelectSelection.Insert Shift:=xlT oRight, CopyOrigin:=xlFormatFromLeftOrAboveRange("C1").SelectActiveCell.FormulaR1C1 = "=RC[-2]&RC[-1]"Range("C1").SelectSelection.AutoFill Destination:=Range("C1:C138750")Columns("C:C").SelectSelection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseFor Each cel In Range("c2:c160000")If IsNumeric(cel) And cel <> "" Thencel.Value = Val(cel.Value)End IfNextRange("A1").SelectRange(Selection, Selection.End(xlDown)).SelectRange(Selection, Selection.End(xlToRight)).SelectSelection.CopyWorkbooks.Open ("C:\Users\5106002125\Desktop\企划管理\静态参考资料\套用公式\在库试算.xlsx")Sheets.Add After:=Sheets(Sheets.Count)Range("A1").SelectSelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseRows("1:1").SelectSelection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAboveSheets("7").SelectedRange.SelectSelection.ClearSheets("11").SelectedRange.SelectSelection.ClearSheets("21").SelectedRange.SelectSelection.ClearSet book1 = Workbooks.Open("C:\Users\5106002125\Desktop\企划管理\过期\7.csv")Set book2 = Workbooks.Open("C:\Users\5106002125\Desktop\企划管理\过期\11.csv")Set book3 = Workbooks.Open("C:\Users\5106002125\Desktop\企划管理\过期\21.csv")Windows("7.csv").ActivateRange("A1").SelectRange(Selection, Selection.End(xlDown)).SelectRange(Selection, Selection.End(xlToRight)).SelectSelection.CopyWindows("在库试算.xlsx").ActivateSheets("7").SelectRange("A1").SelectActiveSheet.PasteWindows("11.csv").ActivateRange("A1").SelectRange(Selection, Selection.End(xlDown)).SelectRange(Selection, Selection.End(xlToRight)).SelectSelection.CopyWindows("在库试算.xlsx").ActivateSheets("11").SelectRange("A1").SelectActiveSheet.PasteWindows("21.csv").ActivateRange("A1").SelectRange(Selection, Selection.End(xlDown)).SelectRange(Selection, Selection.End(xlToRight)).SelectSelection.CopyWindows("在库试算.xlsx").ActivateSheets("21").SelectRange("A1").SelectActiveSheet.PasteFor col = 20 To 41Sheets("公式").SelectRange(Cells(2, col), Cells(3, col)).SelectApplication.CutCopyMode = FalseSelection.CopySheets("Sheet2").SelectRange(Cells(2, col), Cells(3, col)).SelectSelection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _SkipBlanks:=False, Transpose:=FalseRange(Cells(3, col), Cells(3, col)).SelectApplication.CutCopyMode = FalseSelection.AutoFill Destination:=Range(Cells(3, col), Cells(200000, col))Range(Cells(3, col), Cells(200000, col)).CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseNextSheets("公式").SelectRange(Cells(1, 1), Cells(1, 41)).SelectApplication.CutCopyMode = FalseSelection.CopySheets("Sheet2").SelectRange(Cells(1, 1), Cells(1, 41)).SelectSelection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _SkipBlanks:=False, Transpose:=FalseDim r As IntegerRange("a2").SelectSelection.End(xlDown).Selectr = Selection.rowRange(Cells(1, 1), Cells(r, 41)).CopyWorkbooks.AddSelection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseApplication.CutCopyMode = FalseRange("AC1:AO1").Style = "Comma"Range("AM2:AO2").SelectRange("AO2").ActivateRange(Selection, Selection.End(xlDown)).SelectSheets.AddActiveWorkbook.PivotCaches.Create(SourceType:=xlDataba se, SourceData:= _"Sheet1!R2C39:R138210C41",Version:=xlPivotTableVersion14).CreatePivotTable _TableDestination:="Sheet4!R3C1", TableName:="数据透视表1", DefaultVersion:= _xlPivotTableVersion14Sheets("Sheet4").SelectCells(3, 1).SelectWith ActiveSheet.PivotTables("数据透视表1").PivotFields("库位2").Orientation = xlRowField.Position = 1End WithActiveSheet.PivotT ables("数据透视表1").AddDataField ActiveSheet.PivotT ables("数据透视表1" _).PivotFields("在手"), "求和项:在手", xlSumActiveSheet.PivotT ables("数据透视表1").AddDataField ActiveSheet.PivotT ables("数据透视表1" _).PivotFields("在途"), "计数项:在途", xlCountWith ActiveSheet.PivotTables("数据透视表1").PivotFields("计数项:在途").Caption = "求和项:在途".Function = xlSumEnd WithCells.SelectSelection.Style = "Comma"ActiveWorkbook.SaveAs Filename:=P & "\在库试算结果" & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False book1.Close savechanges:=Truebook2.Close savechanges:=Truebook3.Close savechanges:=TrueEnd SubFunction SCH_IDITEM_NO(n)'' SCH_IDITEM_NO 宏''p1 = ActiveWorkbook.PathWorkbooks.Open (p1 & "\" & n & ".csv")Columns("C:C").SelectSelection.Insert Shift:=xlT oRight, CopyOrigin:=xlFormatFromLeftOrAboveRange("C1").SelectActiveCell.FormulaR1C1 = "=RC[-2]&RC[-1]"Range("C1").SelectSelection.AutoFill Destination:=Range("C1:C138750")Columns("C:C").SelectSelection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseFor Each cel In Range("c2:c160000")If IsNumeric(cel) And cel <> "" Thencel.Value = Val(cel.Value)End IfNextActiveWorkbook.SaveAsFilename:="C:\Users\5106002125\Desktop\企划管理\过期\" & , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=FalseActiveWorkbook.CloseEnd Function以下是通过VBA自动化计算实际在库金额的代码,比预计在手和在途库存的流程简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用Excel的VBA代码实现自动化“收集原始数据、汇总计算和报表”联系人:杨先生:电子邮箱:yjjp67163.以房地产销售数据为例。

两个销售中心以Excel记录销售活动,原始数据和直接使用公式形成的表格模板如下。

黄色标题名称为公式项,根据已知数据自动计算。

1原始数据收集表2.2VBA代码Private Sub Workbook_Open()Const YXJUZIUK As String = "05:00:00" '设置自动运行结束最迟时刻Dim MyWb As Workbook '打开的工作表(原始数据和报表)Dim MySht, ShtJC As Worksheet '打开工作薄的指定工作表和本工作簿的指定工作表Dim MyTb, ThisTb As ListObject '打开工作薄的指定表格和本工作簿的指定表格Dim MyRng As RangeDim MyNamePath, Vltd(3), Ftww(4) As StringDim MyRow, MyRows, MyRngR, MyRngC, I, J, Ans As LongOn Error Resume Next '出现错误不提示,直接运行下一行代码Application.ScreenUpdating = False '关闭屏幕刷新Application.DisplayAlerts = False '关闭相应和确认If Time > TimeValue(YXJUZIUK) Then '如果不在凌晨打开, 确认是否运行代码Ans = MsgBox("要进行数据运算吗?", vbYesNo, "请确认是否进行数据运算")If Ans = vbNo Then Exit SubEnd IfVltd(0) = "认购"Vltd(1) = "签约"Vltd(2) = "退房"Ftww(0) = "1本日"Ftww(1) = "2本月"Ftww(2) = "3本年"Ftww(3) = "4项目"MyNamePath = ""'清除汇总计算工作簿原有数据For Each MySht In WorksheetsIf <> "基础" Then '如果不是基础表,清除原有数据MySht.Rows("2:" & edRange.Rows.Count).DeleteEnd IfNext MySht'清除完成'逐个打开读入原始文件新数据Set ShtJC = ThisWorkbook.Sheets("基础")For Each MyRng In ShtJC.Range("原始数据文件[原始数据文件]")Workbooks.Open MyRng.Value, 3, True, , , , True '只读方式打开原始数据文件ShtJC.Cells(MyRng.Row, 2) = FileDateTime(MyRng.Value) '记录原始文件的最终修改时间MyNamePath = ShtJC.Cells(MyRng.Row, 4) & "\收款.xlsx"Workbooks.Open MyNamePath, 3, False, , , , True '读写方式打开对账工作簿With Workbooks("收款.xlsx").Sheets("房款").Rows("2:" & .UsedRange.Rows.Count).DeleteEnd WithThisWorkbook.ActivateFor Each MySht In WorksheetsMyRows = edRange.Rows.CountIf <> "基础" And <> "日报数据" ThenIf MySht.Cells(MyRows, 1) > " " Then '表格后面无空行时添加一行MySht.Range().ListObject.ListRows.Add AlwaysInsert:=TrueMyRows = MyRows + 1End If'读入原始数据Workbooks("销售数据.xlsm").Sheets().Range().CopyMySht.Cells(MyRows, 1).PasteSpecial Paste:=xlPasteValues, _Operation:=xlNone, SkipBlanks:=False, Transpose:=FalseIf = "房款" ThenWorkbooks("收款.xlsx").Sheets("房款").Cells(2, 1).PasteSpecial Paste:=xlPasteValues, _Operation:=xlNone, SkipBlanks:=False, Transpose:=FalseWorkbooks("收款.xlsx").Close Savechanges:=TrueEnd If'读入原始数据完成End IfNext MySht'备份原始数据MyWordbookName = ShtJC.Cells(MyRng.Row, 5) & "销售数据" & Format(Day(Date), "00") & ".xlsm" '设置备份文件名称MyNamePath = ThisWorkbook.Path & "\备份\" & MyWordbookName '设置备份文件路径和名称Kill MyNamePathWorkbooks("销售数据.xlsm").SaveAs MyNamePathWorkbooks(MyWordbookName).Close Savechanges:=False '备份完成,关闭备份的文件Next MyRng ' 下一个原始数据文件'完成原始数据读入'形成日报数据With ShtJC 'ThisWorkbook.Sheets("基础")For Each MyRng In .Range("分期[分期]") '遍历分期数据行MyRow = MyRng.RowFor I = 0 To 3 '范围(本日、本月、本年、项目)For J = 0 To 2 '状态(0认购1签约2退房)Set MySht = ThisWorkbook.Sheets("日报数据")If MySht.Cells(2, 1) > " " Then '如果不是空表格就增加一个新空行MySht.Range("日报数据").ListObject.ListRows.Add AlwaysInsert:=TrueEnd IfMyRows = edRange.Rows.Count '记录表格最后一行以方便后面插入数据'把数据写入日报数据表MySht.Cells(MyRows, 1) = .Cells(MyRow, 1) '写入项目名称MySht.Cells(MyRows, 2) = .Cells(MyRow, 2) '写入分区名称MySht.Cells(MyRows, 3) = .Cells(MyRow, 3) '写入分期名称MySht.Cells(MyRows, 4) = Ftww(I) '写入范围MySht.Cells(MyRows, 5) = Vltd(J) '写入状态Next J '状态Next I '范围Next MyRng '分期'完成日报数据'形成新的空表报文件Kill .Cells(2, 1) '删除原报表文件FileCopy .Cells(3, 1), .Cells(2, 1) '从模板复制出新文件Set MyWb = Workbooks.Open(ThisWorkbook.Sheets("基础").Cells(2, 1)) '打开新文件End With 'ThisWorkbook.Sheets("基础")With MyWb.Sheets("销售日报").Cells(6, 2) = Date - 1 '记录报表截至日期.Sheets("基础").Range("原始数据文件表[最新版本日期]").Value = _ShtJC.Range("原始数据文件[最新版本日期]").ValueFor Each MyRng In ShtJC.Range("数据工作表")If MyRng.Value = "基础" Then.Sheets("基础").Range("原始数据文件表[最新版本日期]").Value = _ShtJC.Range("原始数据文件[最新版本日期]").ValueElse'.Sheets(MyRng.Value).Range(MyRng.Value).Rows.DeleteThisWorkbook.Sheets(MyRng.Value).Range(MyRng.Value).Copy.Sheets(MyRng.Value).Cells(2, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _SkipBlanks:=False, Transpose:=FalseEnd IfNext MyRng '数据行,处理其他工作表.RefreshAll '刷新表报.Save '保存新报表.sheeets("日报").Cells(1, 8).SelectApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True '打开相响应和确认On Error GoTo 0If Time < TimeValue(YXJUZIUK) Then.Close Savechanges:=True '退出报表ThisWorkbook.Close Savechanges:=True '退出本簿Application.QuitEnd IfEnd WithEnd Sub3表报,使用数据透视获得所有需要的数据成果4.1原始数据4.1.1人工报送:定时拷贝报送,优盘、点对点传输(QQ、微信、)4.1.2自动报送:依靠网络自动更新,局域网共享、服务器共享、VBA自动邮件等4.2汇总计算4.2.1人工汇总并报送:接收原始文件到指定文件夹,定时计算并定时拷贝报送,优盘、点对点传输(QQ、微信、)4.2.2自动报送:依靠网络自动更新并自动计算,局域网共享、服务器共享、VBA自动邮件等。

相关文档
最新文档