用宏实现表格自动生成(一个EXCEL工作表内容自动生成新EXCEL工作表)

:暂无数据 2026-08-09 10:30:29 0

用宏实现表格自动生成(一个EXCEL工作表内容自动生成新EXCEL工作表)

这篇文章给大家聊聊关于用宏实现表格自动生成,以及一个EXCEL工作表内容自动生成新EXCEL工作表对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

一个EXCEL工作表内容自动生成新EXCEL工作表

使用VBA吧,可在EXCEL-1中的(查看代码)ThisWorkbook,增加Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)过程,在该过程中可调用EXCEL-0这个模板,并将EXCEL-1内容填至EXCEL-0模板中,再将EXCEL-0另存为(并重命名)至
指定的文件夹。在过程中还可又EXCEL-1内容完整性进行判断,若内容不完整或输入不合规,则可调用过程中的Cancel =TRUE取消保存。

excel表格宏如何制作与运用

excel表格宏如何制作与运用呢?下面我来教大家。

  • 01

    首先,我们打开excel,然后我们点击开发工具;

  • 02

    之后我们点击录制宏;

  • 03

    弹出的界面,我们点击确定;

  • 04

    然后我们进行录制宏的内容,之后我们点击停止录制;

  • 05

    执行宏的话,我们打开另外一个excel文档,然后我们点击开发工具,之后我们点击宏;

  • 06

    弹出的界面,我们点击执行;

  • 07

    结果如图所示,之后就进行了宏的执行了。

怎么才能让筛选出的数据自动生成一个工作簿表格,就是从一个表中筛选出多个数据然后生成多个表格

您可以使用VBA编写宏来实现自动筛选和自动生成多个工作表的功能。以下是一个基本的VBA示例,可将选定列中每个唯一值作为标签自动创建新工作表,并将相关数据复制到该工作表中:
Sub CreateNewSheets()
Dim ws As Worksheet
Dim newSheet As Worksheet
Dim lastRow As Long
Dim colIndex As Integer
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Set ws = ActiveSheet
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ’根据需要更改列号
colIndex = 1 ’根据需要更改列号
For i = 2 To lastRow
dict(ws.Cells(i, colIndex).Value) = 1
Next i
For Each key In dict.keys
Set newSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
newSheet.Name = key
ws.Range("A1").AutoFilter Field:=colIndex, Criteria1:=key
ws.Range("A1").CurrentRegion.Copy Destination:=newSheet.Range("A1")
ws.AutoFilterMode = False
Next key
End Sub
您可以将此代码复制并粘贴到Visual Basic Editor中,并在需要的工作表上运行该宏。请注意,您需要根据需要更改代码中的列号。
此宏假设您要按列A中的唯一值筛选数据,并使用唯一值作为新工作表的名称。如果您需要更改筛选的列或新工作表名称的生成方式,请相应地修改代码。
另外,请注意,此宏将自动在新工作表中创建筛选后的数据的副本,并不会将数据移动或删除原始工作表中。如果您需要将数据移动到新工作表中并删除原始数据,请修改代码以执行此操作。

wps表格js宏编程表一录入数据自动导入表二中进行汇总如何编写宏

在WPS表格中,您可以通过以下步骤编写一个JS宏来实现这个需求:

首先,您需要了解WPS表格中JS宏的基本语法和规则。WPS表格的JS宏和Excel的VBA宏有些类似,但是它们是使用JavaScript编写的。您可以在WPS表格的帮助文档中找到相关的教程和参考。

以下是一个大致的步骤,可以帮助您开始编写这个宏:

  • 在表一中创建一个事件监听器,以便在数据更改时触发宏。您可以使用Worksheet.onEdit函数来做到这一点。例如:

  • javascript复制代码

    Worksheet.onEdit(function(event) {    

    // 这里写你的代码      

    });    

  • 在事件监听器中,编写代码来检查表一中的数据是否已经录入完毕。如果是,则触发导入数据的操作。您可以使用Range.getValue函数来获取单元格的值,然后使用条件语句来检查值是否存在。例如:

  • javascript复制代码

    Worksheet.onEdit(function(event) {    

    var range = event.range;    

    var value = range.getValue();    

    if (value) {    

    // 数据已录入,触发导入数据的操作      

    }    

    });    

  • 在导入数据的操作中,编写代码来将表一中的数据导入到表二中,并按照表二的版面自动向下填充数据。您可以使用Range.setValue函数来设置单元格的值,并使用循环语句来遍历表一中的数据并将它们填充到表二中。例如:

  • javascript复制代码

    Worksheet.onEdit(function(event) {    

    var range = event.range;    

    var value = range.getValue();    

    if (value) {    

    // 数据已录入,触发导入数据的操作      

    var sheet1 = workbook.getSheet("表一");    

    var sheet2 = workbook.getSheet("表二");    

    // 获取表一中的数据,并遍历它们      

    var data = sheet1.getRange("A1:B10").getValues();    

    for (var i = 0; i 《 data.length; i++) {    

    for (var j = 0; j 《 data.length; j++) {    

    // 将数据填充到表二中,并自动向下填充      

    sheet2.getRange("A" + (i+1) + ":B" + (i+1)).setValues();    

    }    

    }    

    }    

    });    

  • 最后,在事件监听器中,编写代码来处理表一中数据修改的情况。如果数据被修改,那么您需要更新表二中的数据以反映最终值。您可以使用Range.setValue函数来设置单元格的值。例如:

  • javascript复制代码

    Worksheet.onEdit(function(event) {    

    var range = event.range;    

    var value = range.getValue();    

    if (value) {    

    // 数据已录入,触发导入数据的操作      

    // ...(省略导入数据的代码)...      

    } else {    

    // 数据被修改,更新表二中的数据      

    var sheet1 = workbook.getSheet("表一");    

    var sheet2 = workbook.getSheet("表二");    

    // 获取表一中的最新数据,并更新表二中的数据      

    var data = sheet1.getRange("A1:B10").getValues();    

    for (var i = 0; i 《 data.length; i++) {    

    for (var j = 0; j 《 data.length; j++) {    

    // 更新表二中的数据以反映最终值      

    sheet2.getRange("A" + (i+1) + ":B" + (i+1)).setValues();    

    }    

    }    

    }    

    });    

excel表格怎么设置自动录制宏

1、首先在电脑桌面里将表格打开。

2、打开了表格之后,随意在表格里面输入一些内容。

3、接着在工具栏上面找到视图这个选项,并点击在选项进入。

4、进入到视图的界面之后,点击里面的宏-录制宏。

5、点击了之后就进入录制宏的设置窗口,在宏名一栏里面输入需要的名称,就可以了。

如何根据excel中指定条件自动生成另一个工作表

如何根据excel中指定条件自动生成另一个工作表 表一做成数据基础表,表二等于表一的数据加上公式,这样你在表一写数据表二就能跳出数据了。用VB写还可以实现导入功能,直接导入数据表,然后生成表二。
在excel中,如何在一个工作表里面添加数据后,另一个工作表自动生成添加的数据
建立引用的公式就可以
如何自动生成新EXCEL工作表?
学习VBA只要2个东西,学过VB,会使用办公软件
在excel的宏里,点击开始录制宏,然后点击保存。
你就可以看到,自动生成的宏代码、然后不清楚的,再按F1帮助。
你这个功能用以下宏实现:
Sub Macro1()

’ Macro1 Macro

Dim n As Integer, fname As String
n = 0
ChDir "D:\"
Do
fname = "D:\工作表" & n & ".xl *** "
If "" 《》 Dir(fname) Then
n = n + 1
Else
Exit Do
End If
Loop
ActiveWorkbook.SaveAs Filename:=fname
End Sub
你填完数据,然后运行这个宏,就可将文件保存为一个新的不重名文件
怎样把一个excel工作表中的员工入社日期与自动生成到另一个工作表中?需要什么公式?
直接在单元格里面写 =NOW()是获取当前时间,或者写 =DATE(Year,month,day).不知道对你有没有用处,你可以试试。
如何用VBA复制当前excel中指定工作表数值到另外一个指定路径工作簿中指定工作表中
Dim arrarr = Range("a1:d10") ’ 需要复制数值的区域,保存结果到数组里面With workbooks.open("a.xlsx") ’打开指定的另外的文件 .Sheets("sheet1").Range("a10:d20") = arr ’复制值到另外的区域 .Save .CloseEnd With 文件必须要打开才可以修改,上面的例子是打开、修改、保存、关闭。

Excel中如何用实现在一个工作表里输入数据,然后在另一个工作报表里自动生成该数据?
看来你对数据库比较熟悉,其实Excel也提供了类似于Aess数据库软件的一些功能,利用好这个技巧,就可以轻松处理好你的问题了~ ~ ~ ~ ~
步骤如下:
一 建立一个数据库
当完成了对一个数据库的结构设计后,就可以在工作表中建立它了。首先在工作表的首行依次输入各个字段:员工姓名、地区、日期、产品名称、销售数量、销售金额、销售金额,如图12-1所示。当我们输入完字段后,就可以在工作表中按照记录输入数据了。
提示:字段名放在工作表的某一行的各相邻单元中。也可以为字段名和尚未建立的数据库记录建立一个格式。格式只是使数据库容易理解,并不影响Excel对数据库进行操作。
二 输入数据
要加入数据至所规定的数据库内,有两种方法,一种是直接键入数据至单元格内, 一种是利用“记录单”输入数据。使用“记录单”是经常使用的方法,其操作步骤如下:
(1)在想加入记录的数据清单中选中任一个单元格。
(2) 从“数据”菜单中选择“记录单”命令。屏幕上会出现一个如图12-2的对话框,选择“确定”按钮。
键即可加入一条记录。如此重复加入更多的记录,当你加完所有记录后,选择“关闭”按钮。我们就会看到在清单底部加入了新增的记录。
我们也可以直接插入记录到数据库中,首先在现有记录的中间插入空的单元格,然后键入记录数据;原来所输入的数据库内容会自动下移。要插入记录到现有的数据库中,可按照下列步骤执行:
1 选定要插入记录的单元格。在“插入”菜单中选择“单元格”命令,在屏幕上出现一个对话框。
2 选择“整行”,按下“确定”按钮,我们就可以看到插入的单元格。输入记录内容到单元格中。
三 记录
对于数据库中的记录,我们可以采用在相应的单元格上进行,也可以对记录单进行,其操作过程如下:
(1) 选择数据清单中的任一单元格。
(2) 从“数据”菜单中选择“记录单”命令,出现一个记录单对话框。
(3) 查找并显示出要修改数据的记录。该记录的内容。(4) 选择“关闭”按钮退出。
四 删除一条记录
对于数据库中不再需要的记录,我们可以使用“删除”命令将其从数据库中删除。使用记录单删除一条记录的操作步骤如下:
(1) 选择数据清单中的任一单元格。从“数据”菜单中选择“记录单”命令。出现一个记录单对话框。
(2) 查找并显示出要删除的记录。选择“删除”按钮,出现一个如图12-5的确认对话框。
(3) 回答确认信息。按下“确定”按钮。
注意:当我们使用数据记录单来删除数据时,不能通过“恢复”按钮或“取消”命令来恢复数据。
excel数据如何自动生成加总到另一个excel表里
所谓自动。无非是预先设置好公式,或者用VBA代码实现。
excel中如何从一个表中将符合两条件 的数据引至另一个工作表?
已经回复你的邮件。
我的一篇帖子详细介绍了这种功能
连载之二:Vlookup,我的最爱!
:bbs.wps./forum.php?mod=viewthread&tid=22356803&fromuid=1551549
希望能够帮助你,满意请采纳!
Excel中如何按指定条件自动复制行到另一个sheet
方法:用EXCEL工作表的移动/复制功能。
1、打开两个文档,如Book1和“整新入仓分析”。我们需要将整新里的表格移动/复制到Book1中。
2、进入“整新表”,在需要移动/复制的工作表上右键--移动/复制工作表。
3、进入”移动/复制工作表“后,点击”工作簿“右侧的三角选择Book1,将”建立副本“勾选,确定。
4、这时,工作表就被复制到Book1表格中了。
excel自动生成工作表怎么做
首先,需要在excel中添加加载项--数据分析库,然后就可以进行数据自动生成了,以专业的术语叫做“随机数发生器”。依次点击:excel选项-加载项-转到,进行分析工具库的添加工作。
2
分析工具库添加完成之后,在excel的“数据”选项卡上,最右侧会多出一个“分析”的菜单栏,点击“数据分析”。
3
选择“数据分析”下的“随机数发生器”。
4
弹出的界面上,为随机数发生器的参数设置界面。其中,变量个数=生成数据列数、随机数个数=生成数据行数,比如,设置:变量个数=5、随机数个数=10,那么,就会生成一个5列、10行的数据。
5
接下来,选择随机数据的分布类型,以“正态分布”为例,设定:平均值=50、标准差=5。
6
选定数据的输出位置,可以选定区域、新建工作表、新建工作簿,本例中以选定区域为例来说情况,如下图,选择将数据输出到:A1:E10区域中。
7
数据输出成功,如下图所示。

如何使用excel的宏生成多个表格

1.ctrl+f11
进入vba器,进行以下操作:
插入—模块
在模块中复制以下代码:(此代码为利用宏编写一个自定义函数)让你可以更加灵活运用!
function
提成(任务
as
single)
as
single
select
case
任务
case
0
to
999
提成
=
0
*
任务
case
1000
to
1999
提成
=
0.01
*
任务
case
2000
to
2999
提成
=
0.02
*
任务
case
else
提成
=
0.03
*
任务
end
select
end
function
’然后你就可以表格中任一单元格用此函数(己经测试成功):
’如b3单元格2500,那么在d3单元格输入公式:=提成(b3)
’以上完全满足你的要求,你还可自行修改参数,希望我的回答对你有用!

如何在excel中将总表数据通过宏按钮自动生成固定格式多个的个表

一、让不同类型数据用不同颜色显示
  在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。
  1.打开“工资表”工作簿,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件格式”对话框。单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红色”。
  2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。
  3.设置完成后,按下“确定”按钮。
  看看工资表吧,工资总额的数据是不是按你的要求以不同颜色显示出来了。
二、建立分类下拉列表填充项
  我们常常要将企业的名称输入到表格中,为了保持名称的一致性,利用“数据有效性”功能建了一个分类下拉列表填充项。
  1.在Sheet2中,将企业名称按类别(如“工业企业”、“商业企业”、“个体企业”等)分别输入不同列中,建立一个企业名称数据库。
  2.选中A列(“工业企业”名称所在列),在“名称”栏内,输入“工业企业”字符后,按“回车”键进行确认。
  仿照上面的操作,将B、C……列分别命名为“商业企业”、“个体企业”……
  3.切换到Sheet1中,选中需要输入“企业类别”的列(如C列),执行“数据→有效性”命令,打开“数据有效性”对话框。在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”……序列(各元素之间用英文逗号隔开),确定退出。
  再选中需要输入企业名称的列(如D列),再打开“数据有效性”对话框,选中“序列”选项后,在“来源”方框中输入公式:=INDIRECT(C1),确定退出。
  4.选中C列任意单元格(如C4),单击右侧下拉按钮,选择相应的“企业类别”填入单元格中。然后选中该单元格对应的D列单元格(如D4),单击下拉按钮,即可从相应类别的企业名称列表中选择需要的企业名称填入该单元格中。
  提示:在以后打印报表时,如果不需要打印“企业类别”列,可以选中该列,右击鼠标,选“隐藏”选项,将该列隐藏起来即可。
  三、建立“常用文档”新菜单
  在菜单栏上新建一个“常用文档”菜单,将常用的工作簿文档添加到其中,方便随时调用。
  1.在工具栏空白处右击鼠标,选“自定义”选项,打开“自定义”对话框。在“命令”标签中,选中“类别”下的“新菜单”项,再将“命令”下面的“新菜单”拖到菜单栏。
  按“更改所选内容”按钮,在弹出菜单的“命名”框中输入一个名称(如“常用文档”)。
  2.再在“类别”下面任选一项(如“插入”选项),在右边“命令”下面任选一项(如“超链接”选项),将它拖到新菜单(常用文档)中,并仿照上面的操作对它进行命名(如“工资表”等),建立第一个工作簿文档列表名称。
  重复上面的操作,多添加几个文档列表名称。
  3.选中“常用文档”菜单中某个菜单项(如“工资表”等),右击鼠标,在弹出的快捷菜单中,选“分配超链接→打开”选项,打开“分配超链接”对话框。通过按“查找范围”右侧的下拉按钮,定位到相应的工作簿(如“工资.xls”等)文件夹,并选中该工作簿文档。
  重复上面的操作,将菜单项和与它对应的工作簿文档超链接起来。
  4.以后需要打开“常用文档”菜单中的某个工作簿文档时,只要展开“常用文档”菜单,单击其中的相应选项即可。
  提示:尽管我们将“超链接”选项拖到了“常用文档”菜单中,但并不影响“插入”菜单中“超链接”菜单项和“常用”工具栏上的“插入超链接”按钮的功能。
  四、制作“专业符号”工具栏
  在专业表格时,常常需要输入一些特殊的专业符号,为了方便输入,我们可以制作一个属于自己的“专业符号”工具栏。
  1.执行“工具→宏→录制新宏”命令,打开“录制新宏”对话框,输入宏名?如“fuhao1”?并将宏保存在“个人宏工作簿”中,然后“确定”开始录制。选中“录制宏”工具栏上的“相对引用”按钮,然后将需要的特殊符号输入到某个单元格中,再单击“录制宏”工具栏上的“停止”按钮,完成宏的录制。
  仿照上面的操作,一一录制好其它特殊符号的输入“宏”。
  2.打开“自定义”对话框,在“工具栏”标签中,单击“新建”按钮,弹出“新建工具栏”对话框,输入名称——“专业符号”,确定后,即在工作区中出现一个工具条。
  切换到“命令”标签中,选中“类别”下面的“宏”,将“命令”下面的“自定义按钮”项拖到“专业符号”栏上(有多少个特殊符号就拖多少个按钮)。
  3.选中其中一个“自定义按钮”,仿照第2个秘技的第1点对它们进行命名。
  4.右击某个命名后的按钮,在随后弹出的快捷菜单中,选“指定宏”选项,打开“指定宏”对话框,选中相应的宏(如fuhao1等),确定退出。
  重复此步操作,将按钮与相应的宏链接起来。
  5.关闭“自定义”对话框,以后可以像使用普通工具栏一样,使用“专业符号”工具栏,向单元格中快速输入专业符号了。
  五、用“视面管理器”保存多个打印页面
  有的工作表,经常需要打印其中不同的区域,用“视面管理器”吧。
  1.打开需要打印的工作表,用鼠标在不需要打印的行(或列)标上拖拉,选中它们再右击鼠标,在随后出现的快捷菜单中,选“隐藏”选项,将不需要打印的行(或列)隐藏起来。
  2.执行“视图→视面管理器”命令,打开“视面管理器”对话框,单击“添加”按钮,弹出“添加视面”对话框,输入一个名称(如“上报表”)后,单击“确定”按钮。
  3.将隐藏的行(或列)显示出来,并重复上述操作,“添加”好其它的打印视面。
  4.以后需要打印某种表格时,打开“视面管理器”,选中需要打印的表格名称,单击“显示”按钮,工作表即刻按事先设定好的界面显示出来,简单设置、排版一下,按下工具栏上的“打印”按钮,一切就OK了。
  六、让数据按需排序
  如果你要将员工按其所在的部门进行排序,这些部门名称既的有关信息不是按拼音顺序,也不是按笔画顺序,怎么办?可采用自定义序列来排序。
  1.执行“格式→选项”命令,打开“选项”对话框,进入“自定义序列”标签中,在“输入序列”下面的方框中输入部门排序的序列(如“机关,车队,一车间,二车间,三车间”等),单击“添加”和“确定”按钮退出。
  2.选中“部门”列中任意一个单元格,执行“数据→排序”命令,打开“排序”对话框,单击“选项”按钮,弹出“排序选项”对话框,按其中的下拉按钮,选中刚才自定义的序列,按两次“确定”按钮返回,所有数据就按要求进行了排序。
  
  七、把数据彻底隐藏起来
  工作表部分单元格中的内容不想让浏览者查阅,只好将它隐藏起来了。
  1.选中需要隐藏内容的单元格(区域),执行“格式→单元格”命令,打开“单元格格式”对话框,在“数字”标签的“分类”下面选中“自定义”选项,然后在右边“类型”下面的方框中输入“;;;”(三个英文状态下的分号)。
  2.再切换到“保护”标签下,选中其中的“隐藏”选项,按“确定”按钮退出。
  3.执行“工具→保护→保护工作表”命令,打开“保护工作表”对话框,设置好密码后,“确定”返回。
  经过这样的设置以后,上述单元格中的内容不再显示出来,就是使用Excel的透明功能也不能让其现形。
  提示:在“保护”标签下,请不要清除“锁定”前面复选框中的“∨”号,这样可以防止别人删除你隐藏起来的数据。
  八、让中、英文输入法智能化地出现
  在表格时,有的单元格中要输入英文,有的单元格中要输入中文,反复切换输入法实在不方便,何不设置一下,让输入法智能化地调整呢?
  选中需要输入中文的单元格区域,执行“数据→有效性”命令,打开“数据有效性”对话框,切换到“输入法模式”标签下,按“模式”右侧的下拉按钮,选中“打开”选项后,“确定”退出。
  以后当选中需要输入中文的单元格区域中任意一个单元格时,中文输入法(输入法列表中的第1个中文输入法)自动打开,当选中其它单元格时,中文输入法自动关闭。
  九、让“自动更正”输入统一的文本
  你是不是经常为输入某些固定的文本,如《电脑报》而烦恼呢?那就往下看吧。
  1.执行“工具→自动更正”命令,打开“自动更正”对话框。
  2.在“替换”下面的方框中输入“pcw”(也可以是其他字符,“pcw”用小写),在“替换为”下面的方框中输入“《电脑报》”,再单击“添加”和“确定”按钮。
  3.以后如果需要输入上述文本时,只要输入“pcw”字符?此时可以不考虑“pcw”的大小写?,然后确认一下就成了。
  十、在Excel中自定义函数
  Excel函数虽然丰富,但并不能满足我们的所有需要。我们可以自定义一个函数,来完成一些特定的运算。下面,我们就来自定义一个计算梯形面积的函数:
  1.执行“工具→宏→Visual Basic器”菜单命令(或按“Alt+F11”快捷键),打开Visual Basic窗口。
  2.在窗口中,执行“插入→模块”菜单命令,插入一个新的模块——模块1。
  3.在右边的“代码窗口”中输入以下代码:
  Function V(a,b,h)V = h*(a+b)/2End Function
  4.关闭窗口,自定义函数完成。
  以后可以像使用内置函数一样使用自定义函数。
  提示:用上面方法自定义的函数通常只能在相应的工作簿中使用。
  十一、表头下面衬张图片
  为工作表添加的背景,是衬在整个工作表下面的,能不能只衬在表头下面呢?
  1.执行“格式→工作表→背景”命令,打开“工作表背景”对话框,选中需要作为背景的图片后,按下“插入”按钮,将图片衬于整个工作表下面。
  2.在按住Ctrl键的同时,用鼠标在不需要衬图片的单元格(区域)中拖拉,同时选中这些单元格(区域)。
  3.按“格式”工具栏上的“填充颜色”右侧的下拉按钮,在随后出现的“调色板”中,选中“白色”。经过这样的设置以后,留下的单元格下面衬上了图片,而上述选中的单元格(区域)下面就没有衬图片了(其实,是图片被“白色”遮盖了)。
  提示?衬在单元格下面的图片是不支持打印的。
  十二、用连字符“&”来合并文本
  如果我们想将多列的内容合并到一列中,不需要利用函数,一个小小的连字符“&”就能将它搞定(此处假定将B、C、D列合并到一列中)。
  1.在D列后面插入两个空列(E、F列),然后在D1单元格中输入公式:=B1&C1&D1。
  2.再次选中D1单元格,用“填充柄”将上述公式复制到D列下面的单元格中,B、C、D列的内容即被合并到E列对应的单元格中。
  3.选中E列,执行“复制”操作,然后选中F列,执行“→选择性粘贴”命令,打开“选择性粘贴”对话框,选中其中的“数值”选项,按下“确定”按钮,E列的内容(不是公式)即被复制到F列中。
  4.将B、C、D、E列删除,完成合并工作。
  提示:完成第1、2步的操作,合并效果已经实现,但此时如果删除B、C、D列,公式会出现错误。故须进行第3步操作,将公式转换为不变的“值”。
  
  生成绩条
  常有朋友问“如何打印成绩条”这样的问题,有不少人采取录制宏或VBA的方法来实现,这对于初学者来说有一定难度。出于此种考虑,我在这里给出一种用函数实现的简便方法。
  此处假定学生成绩保存在Sheet1工作表的A1至G64单元格区域中,其中第1行为标题,第2行为学科名称。
  1.切换到Sheet2工作表中,选中A1单元格,输入公式:=IF(MOD(ROW(),3)=0,″″,IF(0MOD?ROW(),3(=1,sheet1!Aū,INDEX(sheet1!$A:$G,INT(((ROW()+4)/3)+1),COLUMN())))。
  2.再次选中A1单元格,用“填充柄”将上述公式复制到B1至G1单元格中;然后,再同时选中A1至G1单元格区域,用“填充柄”将上述公式复制到A2至G185单元格中。
  至此,成绩条基本成型,下面简单修饰一下。
  3.调整好行高和列宽后,同时选中A1至G2单元格区域(第1位学生的成绩条区域),按“格式”工具栏“边框”右侧的下拉按钮,在随后出现的边框列表中,选中“所有框线”选项,为选中的区域添加边框(如果不需要边框,可以不进行此步及下面的操作)。
  4.同时选中A1至G3单元格区域,点击“常用”工具栏上的“格式刷”按钮,然后按住鼠标左键,自A4拖拉至G186单元格区域,为所有的成绩条添加边框。
  按“打印”按钮,即可将成绩条打印出来。
  十四、Excel帮你选函数
  在用函数处理数据时,常常不知道使用什么函数比较合适。Excel的“搜索函数”功能可以帮你缩小范围,挑选出合适的函数。
  执行“插入→函数”命令,打开“插入函数”对话框,在“搜索函数”下面的方框中输入要求(如“计数”),然后单击“转到”按钮,系统即刻将与“计数”有关的函数挑选出来,并显示在“选择函数”下面的列表框中。再结合查看相关的帮助文件,即可快速确定所需要的函数。
  十五、同时查看不同工作表中多个单元格内的数据
  有时,我们某个工作表(Sheet1)时,需要查看其它工作表中(Sheet2、Sheet3……)某个单元格的内容,可以利用Excel的“监视窗口”功能来实现。
  执行“视图→工具栏→监视窗口”命令,打开“监视窗口”,单击其中的“添加监视”按钮,展开“添加监视点”对话框,用鼠标选中需要查看的单元格后,再单击“添加”按钮。重复前述操作,添加其它“监视点”。
  以后,无论在哪个工作表中,只要打开“监视窗口”,即可查看所有被监视点单元格内的数据和相关信息。
  十六、为单元格快速画边框
  在Excel 2002以前的版本中,为单元格区域添加边框的操作比较麻烦,Excel 2002对此功能进行了全新的拓展。
  单击“格式”工具栏上“边框”右侧的下拉按钮,在随后弹出的下拉列表中,选“绘图边框”选项,或者执行“视图→工具栏→边框”命令,展开“边框”工具栏。
  单击工具栏最左侧的下拉按钮,选中一种边框样式,然后在需要添加边框的单元格区域中拖拉,即可为相应的单元格区域快速画上边框。
  提示:①如果画错了边框,没关系,选中工具栏上的“擦除边框”按钮,然后在错误的边框上拖拉一下,就可以清除掉错误的边框。②如果需要画出不同颜色的边框,可以先按工具栏右侧的“线条颜色”按钮,在随后弹出的调色板中选中需要的颜色后,再画边框即可。③这一功能还可以在单元格中画上对角的斜线。
  
  十七、控制特定单元格输入文本的长度
  你能想象当你在该输入四位数的单元格中却填入了一个两位数,或者在该输入文字的单元格中你却输入了数字的时候,Excel就能自动判断、即时分析并弹出警告,那该多好啊!要实现这一功能,对Excel来说,也并不难。
  例如我们将光标定位到一个登记“年份”的单元格中,为了输入的统一和计算的方便,我们希望“年份”都用一个四位数来表示。所以,我们可以单击“数据”菜单的“有效性”选项。在“设置”卡片“有效性条件”的“允许”下拉菜单中选择“文本长度”。然后在“数据”下拉菜单中选择“等于”,且“长度”为“4”。同时,我们再来到“出错警告”卡片中,将“输入无效数据时显示的出错警告”设为“停止”,并在“标题”和“错误信息”栏中分别填入“输入文本非法!”和“请输入四位数年份。”字样。
  很显然,当如果有人在该单元格中输入的不是一个四位数时,Excel就会弹出示的警告对话框,告诉你出错原因,并直到你输入了正确“样式”的数值后方可继续录入。神奇吧?其实,在Excel的“数据有效性”判断中,还有许多特殊类型的数据格式可选,比如“文本类型”啊,“序列大小”啊,“时间远近”啊,如你有兴趣,何不自作主张,自己设计一种检测标准,让你的Excel展示出与众不同的光彩呢。
  十八、成组填充多张表格的固定单元格
  我们知道每次打开Excel,软件总是默认打开多张工作表。由此就可看出Excel除了拥有强大的单张表格的处理能力,更适合在多张相互关联的表格中协调工作。要协调关联,当然首先就需要同步输入。因此,在很多情况下,都会需要同时在多张表格的相同单元格中输入同样的内容。
  那么如何对表格进行成组呢?首先我们单击第一个工作表的标签名“Sheet1”,然后按住Shift键,单击最后一张表格的标签名“Sheet3”(如果我们想关联的表格不在一起,可以按住Ctrl键进行点选)。此时,我们看到Excel的标题栏上的名称出现了“工作组”字样,我们就可以进行对工作组的工作了。在需要一次输入多张表格内容的单元格中随便写点什么,我们发现,“工作组”中所有表格的同一位置都显示出相应内容了。
  但是,仅仅同步输入是远远不够的。比如,我们需要将多张表格中相同位置的数据统一改变格式该怎么办呢?首先,我们得改变第一张表格的数据格式,再单击“”菜单的“填充”选项,然后在其子菜单中选择“至同组工作表”。这时,Excel会弹出“填充成组工作表”的对话框,在这里我们选择“格式”一项,点“确定”后,同组中所有表格该位置的数据格式都改变了。
  十九、改变文本的大小写
  在Excel中,为表格处理和数据运算提供最强大支持的不是公式,也不是数据库,而是函数。不要以为Excel中的函数只是针对数字,其实只要是写进表格中的内容,Excel都有对它的特殊函数。例如改变文本的大小写。
  在Excel 2002中,至少提供了三种有关文本大小写转换的函数。它们分别是:“=UPPER(源数据格)”,将文本全部转换为大写;“=LOWER(源数据格)”,将文本全部转换成小写;“=PROPER(源数据格)”,将文本转换成“适当”的大小写,如让每个单词的首字母为大写等。例如,我们在一张表格的A1单元格中输入小写的“excel”,然后在目标单元格中输入“=UPPER(A1)”,回车后得到的结果将会是“EXCEL”。同样,如果我们在A3单元格中输入“mr.weiwei”,然后我们在目标单元格中输入“=PROPER(A3)”,那么我们得到的结果就将是“Mr.Weiwei”了。
  二十、提取字符串中的特定字符
  除了直接输入外,从已存在的单元格内容中提取特定字符输入,绝对是一种省时又省事的方法,特别是对一些样式雷同的信息更是如此,比如员工名单、籍贯等信息。
  如果我们想快速从A4单元格中提取称谓的话,最好使用“=RIGHT(源数据格,提取的字符数)”函数,它表示“从A4单元格最右侧的字符开始提取2个字符”输入到此位置。当然,如果你想提取姓名的话,则要使用“=LEFT(源数据格,提取的字符数)”函数了。还有一种情况,我们不从左右两端开始,而是直接从数据中间提取几个字符。比如我们要想从A5单元格中提取“武汉”两个字时,就只须在目标单元格中输入“=MID(A5,4,2)”就可以了。意思是:在A5单元格中提取第4个字符后的两个字符,也就是第4和第5两个字。
  
二十一、把基数词转换成序数词  将英文的基数词转换成序数词是一个比较复杂的问题。因为它没有一个十分固定的模式:大多数的数字在变成序数词都是使用的“th”后缀,但大凡是以“1”、“2”、“3”结尾的数字却分别是以“st”、“nd”和“rd”结尾的。而且,“11”、“12”、“13”这3个数字又不一样,它们却仍然是以“th”结尾的。因此,实现起来似乎很复杂。其实,只要我们理清思路,找准函数,只须编写一个公式,就可轻松转换了。不信,请看:“=A2&IF(OR(VALUE(RIGHT(A2,2))={11,12,13}),″th″,IF(OR(VALUE(RIGHT(A2))={1,2,3,},CHOOSE(RIGHT(A2),″st″,″nd″,″rd″),″th″))”。该公式尽管一长串,不过含义却很明确:①如果数字是以“11”、“12”、“13”结尾的,则加上“th”后缀;②如果第1原则无效,则检查最后一个数字,以“1”结尾使用“st”、以“2”结尾使用“nd”、以“3”结尾使用“rd”;③如果第1、2原则都无效,那么就用“th”。因此,基数词和序数词的转换实现得如此轻松和快捷。
  二十二、用特殊符号补齐位数
  和财务打过交道的人都知道,在账面填充时有一种约定俗成的“安全填写法”,那就是将金额中的空位补齐,或者在款项数据的前面加上“$”之类的符号。其实,在Excel中也有类似的输入方法,那就是“REPT”函数。它的基本格式是“=REPT(“特殊符号”,填充位数)”。
  比如,我们要在中A2单元格里的数字结尾处用“#”号填充至16位,就只须将公式改为“=(A2&REPT(″#″,16-LEN(A2)))”即可;如果我们要将A3单元格中的数字从左侧用“#”号填充至16位,就要改为“=REPT(″#″,16-LEN(A3)))&A3”;另外,如果我们想用“#”号将A4中的数值从两侧填充,则需要改为“=REPT(″#″,8-LEN(A4)/2)&A4&REPT(″#″)8-LEN(A4)/2)”;如果你还嫌不够专业,要在A5单元格数字的顶头加上“$”符号的话,那就改为:“=(TEXT(A5,″$#,##0.00″(&REPT(″#″,16-LEN(TEXT(A5,″$#,##0.00″))))”,一定能满足你的要求。
  二十三、创建文本直方图
  除了重复输入之外,“REPT”函数另一项衍生应用就是可以直接在工作表中创建由纯文本组成的直方图。它的原理也很简单,就是利用特殊符号的智能重复,按照指定单元格中的计算结果表现出长短不一的比较效果。
  比如我们首先制作一张年度收支平衡表,然后将“E列”作为直方图中“预算内”月份的显示区,将“G列”则作为直方图中“超预算”的显示区。然后根据表中已有结果“D列”的数值,用“Wingdings”字体的“N”字符表现出来。具体步骤如下:
  在E3单元格中写入公式“=IF(D30,REPT(″n″,ROUND(D3*100,0)),″″)”,也拖动填充柄至G14。我们看到,一个没有动用Excel图表功能的纯文本直方图已展现眼前,方便直观,简单明了。
  二十四、计算单元格中的总字数
  有时候,我们可能对某个单元格中字符的数量感兴趣,需要计算单元格中的总字数。要解决这个问题,除了利用到“SUBSTITUTE”函数的虚拟计算外,还要动用“TRIM”函数来删除空格。比如现在A1单元格中输入有“how many words?”字样,那么我们就可以用如下的表达式来帮忙:
  “=IF(LEN(A1)=0,0,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1),″,″,″″))+1)”
  该式的含义是先用“SUBSTITUTE”函数创建一个新字符串,并且利用“TRIM”函数删除其中字符间的空格,然后计算此字符串和原字符串的数位差,从而得出“空格”的数量,最后将空格数+1,就得出单元格中字符的数量了。
  二十五、关于欧元的转换
  这是Excel 2002中的新工具。如果你在安装Excel 2002时选择的是默认方式,那么很可能不能在“工具”菜单中找到它。不过,我们可以先选择“工具”菜单中的“加载宏”,然后在弹出窗口中勾选“欧元工具”选项,“确定”后Excel 2002就会自行安装了。
  完成后我们再次打开“工具”菜单,单击“欧元转换”,一个独立的专门用于欧元和欧盟成员国货币转换的窗口就出现了。与Excel的其他函数窗口一样,我们可以通过鼠标设置货币转换的“源区域”和“目标区域”,然后再选择转换前后的不同币种即可。所示的就是“100欧元”分别转换成欧盟成员国其他货币的比价一览表。当然,为了使欧元的显示更显专业,我们还可以点击Excel工具栏上的“欧元”按钮,这样所有转换后的货币数值都是欧元的样式了。

在Excel里用宏实现自动生成sql语句的问题

分类: 电脑/网络 》》 程序设计 》》 其他编程语言
问题描述:

请看我的Bolg里有图片描述,一目了然.blog.sina/u/***********即点击按钮生成5条insert语句,用分号阁开.

知道思路的说下思路,知道细节的最好说详细点啦,先谢谢!

解析:

Const MAX_NUM_ROW = 5000

Const PATH_OUTPUT_ROW = 1
Const PATH_OUTPUT_COL = 2

Const FILE_OUTPUT_ROW = 2

Const FILE_OUTPUT_COL = 2

’Template Info

Const ENTRP_CDE_COL = 1

Const RPT_TMPLT_ID_COL = 2

Const RPT_FMT_TYP_COL = 3

Const FNCTN_ID_COL = 4

Const TMPLT_PATH_COL = 5

Const BNDL_PATH_COL = 6

Const RPT_NAM_GEN_CLASS_COL = 7

Const RPT_DATASOURCE_CLASS_COL = 8

Const ACK_RPT_TMPLT_ID_COL = 9

Const REC_VER_NUM_COL = 10

Const INIT_TIME_COL = 11

Const LAST_UPD_TIME_COL = 12

Const LAST_UPD_BY_COL = 13

Const START_ROW = 5

Private Type Tmplt

ENTRP_CDE As String

RPT_TMPLT_ID As String

RPT_FMT_TYP As String

FNCTN_ID As String

TMPLT_PATH As String

BNDL_PATH As String

RPT_NAM_GEN_CLASS As String

RPT_DATASOURCE_CLASS As String

ACK_RPT_TMPLT_ID As String

REC_VER_NUM As String

INIT_TIME As String

LAST_UPD_TIME As String

LAST_UPD_BY As String

End Type

Dim noOfTmplts As Integer

Dim TmpltArray(MAX_NUM_ROW) As Tmplt

Private Sub CommandButton1_Click()

generateSQL

End Sub

Private Sub generateSQL()

makedir

initData

writeToFile

End Sub

Private Sub makedir()

On Error Resume Next

’Make Directory

MkDir Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL)

End Sub

Private Sub initData()

Erase TmpltArray

’Erase TmpltRoleArray

’noOfUserRoles = 0

noOfTmplts = 0

Dim j As Integer

’Lookup all fields

For j = START_ROW To MAX_NUM_ROW

If Sheet18.Cells(j, RPT_TMPLT_ID_COL) = "" Then

Exit For

End If

’Set Template

TmpltArray(noOfTmplts).ENTRP_CDE = Sheet18.Cells(j, ENTRP_CDE_COL)

TmpltArray(noOfTmplts).RPT_TMPLT_ID = Sheet18.Cells(j, RPT_TMPLT_ID_COL)

TmpltArray(noOfTmplts).RPT_FMT_TYP = Sheet18.Cells(j, RPT_FMT_TYP_COL)

TmpltArray(noOfTmplts).FNCTN_ID = Sheet18.Cells(j, FNCTN_ID_COL)

TmpltArray(noOfTmplts).TMPLT_PATH = Sheet18.Cells(j, TMPLT_PATH_COL)

TmpltArray(noOfTmplts).BNDL_PATH = Sheet18.Cells(j, BNDL_PATH_COL)

TmpltArray(noOfTmplts).RPT_NAM_GEN_CLASS = Sheet18.Cells(j, RPT_NAM_GEN_CLASS_COL)

TmpltArray(noOfTmplts).RPT_DATASOURCE_CLASS = Sheet18.Cells(j, RPT_DATASOURCE_CLASS_COL)

TmpltArray(noOfTmplts).ACK_RPT_TMPLT_ID = Sheet18.Cells(j, ACK_RPT_TMPLT_ID_COL)

TmpltArray(noOfTmplts).REC_VER_NUM = Sheet18.Cells(j, REC_VER_NUM_COL)

TmpltArray(noOfTmplts).INIT_TIME = Sheet18.Cells(j, INIT_TIME_COL)

TmpltArray(noOfTmplts).LAST_UPD_TIME = Sheet18.Cells(j, LAST_UPD_TIME_COL)

TmpltArray(noOfTmplts).LAST_UPD_BY = Sheet18.Cells(j, LAST_UPD_BY_COL)

noOfTmplts = noOfTmplts + 1

Next

End Sub

Private Sub writeToFile()

Dim lvOutputPath As String

lvOutputPath = Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL) & "\" & Sheet18.Cells(FILE_OUTPUT_ROW, FILE_OUTPUT_COL)

If lvOutputPath = "" Then

MsgBox "File Output Path Missing!"

Exit Sub

End If

fileNum = FreeFile

’ Open Output Path

Open lvOutputPath For Output As fileNum

Dim lvUserSql As String

For j = 0 To noOfTmplts - 1

lvUserSql = "INSERT INTO RS_RPT_TMPLT(ENTRP_CDE,RPT_TMPLT_ID,RPT_FMT_TYP,FNCTN_ID,TMPLT_PATH,BNDL_PATH,RPT_NAM_GEN_CLASS,RPT_DATASOURCE_CLASS,ACK_RPT_TMPLT_ID,REC_VER_NUM,INIT_TIME,LAST_UPD_TIME,LAST_UPD_BY) " & _

"values(’TF’,’" & TmpltArray(j).RPT_TMPLT_ID & "’,’" & TmpltArray(j).RPT_FMT_TYP & "’,’" & TmpltArray(j).FNCTN_ID & "’,’" & TmpltArray(j).TMPLT_PATH & "’,’" & TmpltArray(j).BNDL_PATH & "’,’" & _

TmpltArray(j).RPT_NAM_GEN_CLASS & "’,’" & TmpltArray(j).RPT_DATASOURCE_CLASS & "’,’" & TmpltArray(j).ACK_RPT_TMPLT_ID & "’," & TmpltArray(j).REC_VER_NUM & "," & TmpltArray(j).INIT_TIME & "," & TmpltArray(j).LAST_UPD_TIME & ",’" & TmpltArray(j).LAST_UPD_BY & "’);"

Print #fileNum, lvUserSql

Next

Close fileNum

MsgBox "Finished"

Exit Sub

Err_Open_File:

Close lvFileNum

If Err.Number = 76 Then

’Path Not Found

MsgBox Err.Description

Exit Sub

Else

MsgBox Err.Description

Exit Sub

End If

End Sub

如果你还想了解更多这方面的信息,记得收藏关注本站。

用宏实现表格自动生成(一个EXCEL工作表内容自动生成新EXCEL工作表)

本文编辑:admin

更多文章:


2020哪款笔记本性价比高(哪款笔记本电脑性价比高)

2020哪款笔记本性价比高(哪款笔记本电脑性价比高)

本篇文章给大家谈谈2020哪款笔记本性价比高,以及哪款笔记本电脑性价比高对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月7日 17:30

新装硬盘怎么分区(怎样将硬盘重新分区)

新装硬盘怎么分区(怎样将硬盘重新分区)

本篇文章给大家谈谈新装硬盘怎么分区,以及怎样将硬盘重新分区对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 14:30

如何用迅雷下载含有敏感资源(win10系统下迅雷无法下载敏感资源怎么解决)

如何用迅雷下载含有敏感资源(win10系统下迅雷无法下载敏感资源怎么解决)

大家好,关于如何用迅雷下载含有敏感资源很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于win10系统下迅雷无法下载敏感资源怎么解决的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希

2026年9月7日 13:10

如何申请电子公章(电子印章怎么领取)

如何申请电子公章(电子印章怎么领取)

本篇文章给大家谈谈如何申请电子公章,以及电子印章怎么领取对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 08:50

地球帝国中文版下载(高悬赏,求类似帝国时代的单机游戏和安全下载地址)

地球帝国中文版下载(高悬赏,求类似帝国时代的单机游戏和安全下载地址)

今天给各位分享高悬赏,求类似帝国时代的单机游戏和安全下载地址的知识,其中也会对高悬赏,求类似帝国时代的单机游戏和安全下载地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 07:20

bios设置每天自动开机(bios电源管理怎么设置自动开关机)

bios设置每天自动开机(bios电源管理怎么设置自动开关机)

本篇文章给大家谈谈bios设置每天自动开机,以及bios电源管理怎么设置自动开关机对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月7日 06:40

ios可以上推特的加速器(什么加速器最好用)

ios可以上推特的加速器(什么加速器最好用)

其实ios可以上推特的加速器的问题并不复杂,但是又很多的朋友都不太了解什么加速器最好用,因此呢,今天小编就来为大家分享ios可以上推特的加速器的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年9月7日 06:10

女排超级联赛赛程(女排联赛总决赛赛程)

女排超级联赛赛程(女排联赛总决赛赛程)

大家好,如果您还对女排超级联赛赛程不太了解,没有关系,今天就由本站为大家分享女排超级联赛赛程的知识,包括女排联赛总决赛赛程的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年9月7日 06:00

本地连接无法识别网络怎么办(未识别的网络怎么处理)

本地连接无法识别网络怎么办(未识别的网络怎么处理)

本篇文章给大家谈谈本地连接无法识别网络怎么办,以及未识别的网络怎么处理对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月7日 04:00

电脑突然开不了机电源灯不亮(电脑无法启动的解决方法)

电脑突然开不了机电源灯不亮(电脑无法启动的解决方法)

各位老铁们好,相信很多人对电脑突然开不了机电源灯不亮都不是特别的了解,因此呢,今天就来为大家分享下关于电脑突然开不了机电源灯不亮以及电脑无法启动的解决方法的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 03:20

最近更新

热门文章

yoga pro 14s carbon(yoga14s接口类型)
2026-07-03 17:50:01 浏览:5
domino directory(帮我翻译一下Recipient’s Domino Directory entry does not specify a valid Notes mail file)
2026-08-03 19:20:01 浏览:4
标签列表