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 ...
随机推荐
- python chunk模块
chunk模块用于读取TIFF格式的文件,打开应该使用二进制模式 TIFF 标签图像文件格式 import chunk import chunk f=open('E:\\test.tiff','rb' ...
- java后台获取和js拼接展示信息
java后台获取和js拼接展示信息: html页面代码: <div class="results-bd"> <table id="activityInf ...
- php array 根据value获取key,in_array()判断是否在数组内实例
php array 根据value获取key,in_array()判断是否在数组内实例 <?php header("Content-type: text/html; charset=u ...
- EXKMP
(我和lesphere,reverse研究了这个东西一上午)QAQ kmp是求字符串S的任意前缀与字符串T的最长的相同的前缀和后缀 exkmp第求字符串S的任意后缀与字符串T的最长公共前缀 与kmp相 ...
- 各种语言中的可变参数(java、python、c++、javascript)
索引: java python c++ js 1.Java public class Animal { // 接受可变参数的方法 void eat(String... Objects) { for ( ...
- TensorFlow入门(三)多层 CNNs 实现 mnist分类
欢迎转载,但请务必注明原文出处及作者信息. 深入MNIST refer: http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mni ...
- [矩阵十题第七题]vijos 1067 Warcraft III 守望者的烦恼 -矩阵快速幂
背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫“闪烁”,这个技能可以把她传送到后面的监狱内查看,她比较懒,一般不查看 ...
- Android和PHP开发最佳实践
Android和PHP开发最佳实践 <Android和PHP开发最佳实践>基本信息作者: 黄隽实丛书名: 移动应用开发技术丛书出版社:机械工业出版社ISBN:9787111410508上架 ...
- Jackson 使用和注意项
依赖maven: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId ...
- hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入
一 在HIVE中创建ETL数据库 ->create database etl; 二 在工程目录下新建MysqlToHive.py 和conf文件夹 在conf文件夹下新建如下文件,最后的工程目录 ...