20170731xlVba根据数据表和模板表生成新表
Public Sub SplitData()
Dim Wb As Workbook
Dim Sht As Worksheet
Dim NewSht As Worksheet
Dim arr As Variant
Dim Brr()
Set Wb = Application.ThisWorkbook
Set Sht = Wb.Worksheets("总")
With Sht
endrow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
Set Rng = .Range("A3:L" & endrow)
arr = Rng.Value
For J = 6 To UBound(arr, 2)
ReDim Brr(1 To 6, 1 To 1)
Index = 0
mysum = 0
Set NewSht = CopySheet("模板", arr(1, J))
For i = LBound(arr) + 1 To UBound(arr)
If Len(arr(i, J)) > 0 Then
If arr(i, J) > 0 Then
Index = Index + 1
ReDim Preserve Brr(1 To 6, 1 To Index)
Brr(1, Index) = Index
Brr(2, Index) = arr(i, 2) '品名
Brr(3, Index) = arr(i, 3) '单位
Brr(4, Index) = arr(i, 5) '单价
Brr(5, Index) = arr(i, J) '数量
Brr(6, Index) = arr(i, 5) * arr(i, J) '数量
mysum = mysum + Brr(6, Index)
End If
End If
Next i
With NewSht
.Range("E3").Value = arr(1, J)
Set Rng = .Range("A4")
Set Rng = Rng.Resize(UBound(Brr, 2), UBound(Brr))
Rng.Value = Application.WorksheetFunction.Transpose(Brr)
SetBorders Rng
Set Rng = .Cells(.Rows.Count, "E").End(xlUp).Offset(1, 0)
Rng.Value = "合计"
Set Rng = .Cells(.Rows.Count, "F").End(xlUp).Offset(1, 0)
Rng.Value = mysum
Set Rng = .Cells(.Rows.Count, "B").End(xlUp).Offset(2, 0)
Rng.Value = "注:一式三联,第三联为供应商所有,其它联为客户所有。"
Rng.HorizontalAlignment = xlLeft
End With
Next J
End With
Set Wb = Nothing
Set Sht = Nothing
Set NewSht = Nothing
End Sub
Sub SetBorders(ByVal Rng As Range)
With Rng.Borders
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Public Function CopySheet(ByVal Model As String, ByVal NewName As String) As Worksheet
Application.DisplayAlerts = False
Dim Wb As Workbook
Dim ModelSht As Worksheet
Dim NewSht As Worksheet
Set Wb = Application.ThisWorkbook
Set ModelSht = Wb.Worksheets(Model)
On Error Resume Next
Wb.Worksheets(NewName).Delete
On Error GoTo 0
ModelSht.Copy After:=Wb.Worksheets(Wb.Worksheets.Count)
Set NewSht = Wb.Worksheets(Wb.Worksheets.Count)
NewSht.Name = NewName
Application.DisplayAlerts = True
Set CopySheet = NewSht
Set Wb = Nothing
Set NewSht = Nothing
Set ModelSht = Nothing
End Function
20170731xlVba根据数据表和模板表生成新表的更多相关文章
- SQL Server复制表结构和表数据生成新表的语句
参考:http://topic.csdn.net/t/20020621/09/820025.html SELECT * INTO newTableName FROM oldTabl ...
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- 使用NPOI按照word模板文件生成新的word文件
/// <summary> /// 按照word模板文件 生成新word文件 /// </summary> /// <param name="tempFile& ...
- CodeSmith单表生成实体模板与生成多表实体模板
生成单实体模板: <%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly ...
- powerdesigner中将表的name在生成建表sql时生成注释
1.为powerdesigner的表设置注释方法: powerdesigner默认没有注释: 设置方法: 选择那个表 右键- >Properties- >Columns- >Cust ...
- C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高. 包装了一个简单的sql ...
- MySQL通过SQL语句来直接生成新表
1. 既复制表结构,也复制表数据 mysql> CREATE TABLE tmp_table SELECT * FROM dede_news; 说明:这种方法的缺点就是新表中没有了旧表的prim ...
- MySQL 复制已存在的表生成新表
从已有的表创建一个新的空表 CREATE TABLE new_table LIKE old_table; 注意: create table ... like 创建的表会保留原有表的字段.索引的定义,但 ...
- VBA练习-打开文件,添加选中项,生成新表
学习VBA,正好给财务制作一个小工具: Sub 打开人员信息表() Dim wb As Workbook, c As Integer Set wb = Workbooks.Open(, True) c ...
随机推荐
- CAScrollLayer
CAScrollLayer 对于一个未转换的图层,它的bounds和它的frame是一样的,frame属性是由bounds属性自动计算而出的,所以更改任意一个值都会更新其他值. 但是如果你只想显示一个 ...
- SQL Server报“GUID应包含带4个短划线的32位数”
转自:http://www.seayee.net/article/info_106.html 最近在配置一台服务器的MS SQL Server 2005的维护计划自动备份数据库,能创建维护计划,但设置 ...
- C/C++之全局、static对象/变量的初始化问题
关于全局.static对象/变量的初始化问题 1. 全局变量.static变量的初始化时机:main()函数执行之前(或者说main中第一个用户语句执行之前). 2. 初始化顺序. 1)全局对象.外部 ...
- SpringMVC Spring MyBatis 框架整合 Annotation MavenProject
项目结构目录 pom.xml jar包管理 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- Android LCD(二):LCD常用接口原理篇(转)
源: Android LCD(二):LCD常用接口原理篇
- MySQL Crash Course #01# Chapter 1. 2 概念. Primary key
索引 database table schema Primary Key MySQL 书的第一章介绍一些基本的概念.理解数据库是掌握 MySQL 非常重要的一个部分. 第二章简单介绍了 MySQL 以 ...
- 怎么说, 开发会很乐意去主动修改bug?
怎么说, 开发会很乐意去主动修改bug? 一图顶上千言万语,如下:
- C++中两个类中互相包含对方对象的指针问题(转载)
出处:http://www.cnblogs.com/hanxi/archive/2012/07/25/2608068.html // A.h #include "B.h" clas ...
- Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案(转载)
转载:http://www.th7.cn/Program/c/201303/127343.shtml 原因是Visual C++ 2012 使用了更加安全的 run-time library rout ...
- 用GDB调试Segmentation 段错误【转】
本文转载自:http://blog.csdn.net/learnhard/article/details/4879834 调试Linux程序的时候,出现Segmentation Fault是最郁闷的事 ...