当前位置:主页 > Office办公 > Excel专区

最新发布

EXCEL VBA 跨表合并多个文件
EXCEL VBA 跨表合并多个文件

‘选择一个目录,将目录中的所有EXCEL文件导入当前工作表‘这些EXCEL文件最好格式能一样,这里是每个文件是同一个格式Sub 批量()Dim FD, str$, arrSet FD = Application.FileDialog(msoFileDialogFolderPicker)If FD.Show = -1 Then t = FD.SelectedItems(1) Else Exit Sub ‘如果没选择文件夹则退出Application.ScreenUpdating = FalseCells.NumberFormatLocal = "@"str = Dir(t & "\*.xl*") ‘查找格式为EXCEL的文件While Len(str) > 0 ‘文件名不为空时Workbooks.Open (t & IIf(Right(t, 1) = "", "", "") & str) ‘打开工作簿With ActiveWorkbook.ActiveSheet.Range(.Cells(2, "l"), .Cells(.[a65536].End(3).Row, "l")) = "’" & Left(str, Len(str) – IIf(Right(str, 1) = "x", 5, 4))arr = .UsedRangeWorkbooks(str).Close False ‘关闭工作薄Kill (t & IIf(Right(t, 1) = "", "", "") & str) ’删除工作薄(如果不删除,省去这一步)End WithWith ActiveSheetrw = .[a65536].End(3).Row + 1.Cells(rw, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr ‘将数据写入当前工作表End Withstr = Dir() ‘查找下一个文件WendIf [a1] = "" Then Rows(1).Delete ‘如果A1为空,删除第一行Application.ScreenUpdating = TrueEnd Sub

102 次浏览
利用VBA实现Excel表格计算
利用VBA实现Excel表格计算

利用Excel制作电子表格时,有时需要用到计算填充功能,比如某列每种元件的价格合计,就是由E列元件单价乘以D列元件数量得来的。通过分析,发现利用Excel提供的VBA(VisualBasicforApplication)功能,写几行Basic代码即可方便地达到自动填充F列数据的目的,且计算结果为纯数据值,可以自由进行处理。具体实现步骤如下:  1. 建立Excel工作表,分别填入其它相应的数据,包括E列元件的单价和D列元件数量。  2. 点击“视图”→“工具栏”→“VisualBasic”→VB控件工具箱。  3. 在整个工作表的底部或适当的位置放置控制按钮“CommandButton1”。  4. 双击控制按钮,加入语句:PrivateSubCommandButton1_Click()DimiAsInteger’自动填充的行号DimrandAsString’工作表D列的范围参数DimraneAsString’工作表E列的范围参数DimranfAsString’工作表F列的范围参数  Fori=2To12’12为本例中给出的填充结果行号,可由使用者自己设定’该循环主要完成工作表F列计算表格的自动填充rand=″D″+CStr(i)rane=″E″+CStr(i)ranf=″F″+CStr(i)Worksheets(″Sheet1″).Range(ranf)=Worksheets(″Sheet1″).Range(rand)*Worksheets(″Sheet1″).Range(rane)NextiEndSub  5. 按执行键,就可达到设计要求的计算表格项的自动填充,且填充结果为纯数据。  Excel提供了VBA功能,使我们可以根据需要对其进行适当的二次开发,仔细研究其用法,会使制作电子表格的工作更加轻松。

132 次浏览
excel中利用VBA将指定的单元格定位于屏幕*
excel中利用VBA将指定的单元格定位于屏幕*

如果工作表中的单元格都具有相同的行高和列宽,我们可以用VBA的方法将给定的单元格和区域定位于屏幕*,下面是VBA代码:Sub CenterOnCell(OnCell As Range)Dim VisRows As IntegerDim VisCols As Integer‘关闭屏幕更新Application.ScreenUpdating = False‘激活区域所在的工作簿和工作表OnCell.Parent.Parent.ActivateOnCell.Parent.Activate‘获取活动窗口的可视行数和列数With ActiveWindow.VisibleRangeVisRows = .Rows.CountVisCols = .Columns.CountEnd With‘ 确定参考单元格并用GOTO方法将该单元格定位到屏幕左上角。‘ 该参考单元格用给定的单元格的行数和列数分别减去可视行数和可视列数除以2来确定。‘ 用MAX函数确保参考单元格的最小行数和列数为1。With Application.Goto reference:=OnCell.Parent.Cells( _.WorksheetFunction.Max(1, OnCell.Row + _(OnCell.Rows.Count / 2) – (VisRows / 2)), _.WorksheetFunction.Max(1, OnCell.Column + _(OnCell.Columns.Count / 2) – _.WorksheetFunction.RoundDown((VisCols / 2), 0))), _scroll:=TrueEnd With‘选择给定的单元格OnCell.Select‘启用屏幕更新Application.ScreenUpdating = TrueEnd Sub假如给定的区域为M50:N51,可以在VBA中用下面的方法调用上述代码:CenterOnCell Range("m50:n51")

324 次浏览
EXCEL 公式 多列转成一行图解教程
EXCEL 公式 多列转成一行图解教程

EXCEL 公式 2列多行转成1行=OFFSET($A1,ROUNDUP(COLUMN(A1)/2,0)-1,MOD(COLUMN(B1),2))EXCEL 公式 多列转成一行图解教程3列多行转成1行 =OFFSET($A1,ROUNDUP(COLUMN(A1)/3,0)-1,MOD(COLUMN(C1),3))以此类推,4列以上的呢?大家可以自己试试

124 次浏览
EXCEL如何使用VBA一次罗列表中三省的员工姓名?
EXCEL如何使用VBA一次罗列表中三省的员工姓名?

请罗列“四川省”、“湖南省”、“湖北省”三个省份员工的资料。VBA代码如下:Sub test()‘定义变量Dim rng As Range, RngTemp As Range, firstAddress As StringDim i As Byte, findCell As Range, sh As Worksheet, shtname As String‘将查找的目标设置为C2单元格到C列最后一个非空单元格赋予变量为rngSet rng = Range([C2], Cells(Rows.Count, "C").End(xlUp))‘循环赋予查找数组的每一个元素For i = 0 To UBound(Array("四川省", "湖南省", "湖北省"))‘开始查找数据,按值精确查找,不区分大小写Set RngTemp = rng.Find(What:=Array("四川省", "湖南省", "湖北省")(i), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)‘ 如果找到目标,则赋予该目标的单元格地址给firstAddressIf Not RngTemp Is Nothing ThenfirstAddress = RngTemp.AddressDo‘变量findCell没有初始化,则需要初始化,否则合并查找到的数值If findCell Is Nothing ThenSet findCell = RngTempElseSet findCell = Union(findCell, RngTemp)End If‘查找下一个Set RngTemp = rng.FindNext(RngTemp)‘循环到不为第一个找到的目标地址为止Loop While RngTemp.Address <> firstAddressEnd IfNext i‘如果查找的内容不为空,则选择查找到内容所在行,否则显示提醒If Not findCell Is Nothing ThenfindCell.EntireRow.SelectElseMsgBox "没有找到符合条件的数据!"Exit SubEnd If‘防止错误On Error Resume Next‘把当前工作表的名称赋予shtnameshtname = ActiveSheet.NameSet sht = Sheets("查询结果")‘如果不存在查询结果表,则添加一个“查询结果”工作表If Err.Number <> 0 ThenSheets.Add after:=Sheets(Sheets.Count)Sheets(Sheets.Count).Name = "查询结果"ElseSheets(Sheets.Count).Cells.ClearEnd IfSheets(shtname).SelectSelection.Copy Sheets(Sheets.Count).[A1]End Sub

140 次浏览
如何利用VBA生成一列不重复的随机整数
如何利用VBA生成一列不重复的随机整数

如果我们要用VBA生成一列不重复的随机整数,可以用下面的VBA代码。本例可以在A1:A100中产生1-100的不重复随机整数。Sub RndNumberNoRepeat()Dim TempArr1(99) As Integer, TempArr2(0 To 99, 1 To 1) As IntegerDim RndNumber As Integer, i As IntegerRandomize (Timer) ‘初始化随机数生成器For i = 0 To 99 ‘产生包含1-100的不重复的随机数列TempArr1(i) = iNext iFor i = 99 To 0 Step -1RndNumber = Int(i * Rnd)TempArr2(99 – i, 1) = TempArr1(RndNumber) + 1TempArr1(RndNumber) = TempArr1(i)Next i‘在A1:A100中输入这些数字Range("a1:a100").Value = TempArr2End Sub

141 次浏览
利用VBA批量添加邮件链接
利用VBA批量添加邮件链接

如果Excel表格中的某个区域有许多文本格式的邮件地址需要添加链接,用手工的方式非常繁琐。可以使用下面的VBA代码来快速添加链接,假设该区域为F2:F18。Sub ConvertToEmail()Dim convertRng As RangeSet convertRng = Range("F2:F18")Dim rng As RangeFor Each rng In convertRngIf rng.Value <> "" ThenActiveSheet.Hyperlinks.Add rng, "mailto:" & rng.ValueEnd IfNext rngEnd Sub

99 次浏览
在excel中利用VBA在工作簿中创建新的工作表
在excel中利用VBA在工作簿中创建新的工作表

在VBA中,可以用Sheets.Add 方法在工作簿中新建工作表。其语法是:Sheets.Add(Before, After, Count, Type)其中参数Before、After指定新建工作表的位置,Coun指定工作表的数量,Type指定新建工作表的类型。如下例:在工作簿新建一个名称为“工作表1”的工作表:Sub AddWorksheet()On Error Resume NextWorksheets.Add().Name = "工作表1"End Sub在最后一个工作表的后面新建名称为“工作表2”的工作表:Sub AddWorksheetAfterLast()On Error Resume NextWorksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "工作表2"End Sub在最后一个工作表的前面新建4个工作表:Sub Add4Worksheets()Worksheets.Add Before:=Worksheets(Worksheets.Count), Count:=4End Sub运行下面的代码中,首先给出一个提示,要求用户输入新建工作表的名称,然后用该名称新建工作表。如果出现错误,如名称过长或该名称已被使用,将直接新建一个工作表。

98 次浏览
excel用VBA删除空行和空列
excel用VBA删除空行和空列

在Excel中删除空行和空列的方法有很多,下面的方法是用VBA代码来删除工作表指定区域中的空行和空列:Option ExplicitSub Delete_Empty_Rows()Dim rnArea As RangeDim lnLastRow As Long, i As Long, j As LongApplication.ScreenUpdating = FalselnLastRow = Selection.Rows.CountSet rnArea = Selectionj = 0For i = lnLastRow To 1 Step -1If Application.CountA(rnArea.Rows(i)) = 0 ThenrnArea.Rows(i).Deletej = j + 1End IfNext irnArea.Resize(lnLastRow – j).SelectApplication.ScreenUpdating = TrueEnd SubSub Delete_Empty_Columns()Dim lnLastColumn As Long, i As Long, j As LongDim rnArea As RangeApplication.ScreenUpdating = FalselnLastColumn = Selection.Columns.CountSet rnArea = Selection

166 次浏览
exel单击单元格时运行一个指定的宏
exel单击单元格时运行一个指定的宏

我们可以用一个常规的方法来实现当单击某个单元格时运行一个指定的宏。方法如下:1.选择一个单元格,按住Shift键的同时,单击菜单“编辑→复制图片”,在弹出的“复制图片”对话框中,“外观”选择“如屏幕所示”,“格式”选择“位图”,单击“确定”。这时该单元格以位图的形式被复制下来。 2.继续按住Shift键,再次单击菜单“编辑→粘贴图片”,这时单元格图片被粘贴到该单元格所在位置。3.右击该单元格图片,在弹出的菜单中选择“指定宏”,在“指定宏”对话框中选择一个需要运行的宏名称,单击“确定”。4.以后,当单击这个“单元格”时,指定的宏将会运行

99 次浏览
共计27343条记录 上一页 1.. 254 255 256 257 258 259 260 ..2735 下一页