市区县分离
Sub 孙1()Dim sFor i = 1 To 56Set s = Range("B" & i)城市 = InStr(s, "市")区县 = InStr(s, "区")Range("E" & i) = Left(s, 城市)Range("F" & i) = Replace(Left(s, 区县), Left(s, 城市), "")Range("G" & i) = Right(s, Len(s) - 区县)NextEnd Sub
在多个工作簿多个工作表中找到汇总表中缺失的值并进行填充(一次v多列)
Sub shishi()arr = Range("A1").CurrentRegionFor j = 2 To UBound(arr, 1)If arr(j, 2) = "" Thensn = arr(j, 1)Call 查找(sn, j)End IfNextEnd SubSub 查找(sn, j)Application.ScreenUpdating = False '屏幕刷新关闭Set 总表 = ThisWorkbook.Sheets("Sheet1")Set FSO对象 = CreateObject("Scripting.FileSystemObject")Set 文件夹 = FSO对象.GetFolder("F:\新建文件夹")For Each i In 文件夹.FilesSet 工作簿 = Workbooks.Open(i)For Each 工作表 In 工作簿.WorksheetsSet 结果 = Sheets(工作表.Name).UsedRange.Find(sn)If Not 结果 Is Nothing Then地址 = Replace(结果.Address, "$", "")总表.Range("B" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 1)总表.Range("C" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 2)总表.Range("D" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 3)总表.Range("E" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 4)总表.Range("F" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 5)总表.Range("G" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 6)总表.Range("H" & j) = Sheets(工作表.Name).Range(地址).Offset(0, 7)GoTo 关闭End IfNext关闭: 工作簿.Close 0NextApplication.ScreenUpdating = True '屏幕刷新关闭End Sub
在所有表中Vlookup想要的结果
Sub shishi()Dim Ii= 2Do While Range("A" & I) <> " "单元格 = "C" & ICall 查找(Range("A" & I), 单元格)i= i+ 1LoopEnd SubSub 查找(形参, 单元格)For Each 工作表 In Worksheetsif 工作表.Name <> "总表" ThenSet 区域 = Sheets(工作表.Name).Cells.Find(形参)If Not 区域 is Nothing Then行号 = Mid(区域.Address, InStrRev(区域.Address,"$")+ 1)Set 区域2 = Sheets(工作表.Name).Rows(1).Find("分数")截取 = Mid(区域2.Address, 2)个数 = InStr(截取, "$") -1列号 = Mid(截取, 1, 个数)Sheets("总表").Range(单元格) = Sheets(工作表.Name).Range(列号 & 行号)Exit ForEnd IfEnd IfNextEnd Sub
不同工作簿的对应工作表的叠加求和
Sub shishi()Excel.Application.ScreenUpdating = FalseSet FSO对象 = CreateObject("Scripting.FileSystemObject")Set 文件夹 = FSO对象.GetFolder("F:\新建文件夹")For Each i In 文件夹.FilesSet 工作簿 = Workbooks.Open(i)For Each sh In 工作簿.WorksheetsSet 工作表 = 工作簿.Worksheets(sh.Name)Set 合并表 = ThisWorkbook.Worksheets(sh.Name)工作表.Range("A1").CurrentRegion.Copy合并表.Range("A1").PasteSpecial xlPasteAll, xlPasteSpecialoprationaddNext工作簿.CloseNextExcel.Application.ScreenUpdating = TrueEnd Sub
季度汇总
Sub 季度汇总()Dim i, k, nameDim w As Worksheet, r As WorksheetSet r = Worksheets("季度汇总")'循环扫描汇总表中的每一行,记住每次要查找的姓名For i = 3 To 10name = r.Cells(i, 2)'循环扫描所有工作表,并用 w 指向该工作表For Each w In Worksheets'如果该工作表名字以“月”结尾,则认为是月报表If Right(w.name, 1) = "月" Then'循环扫描该月报表的每一行,判断其姓名列是否等于namek = 3Do While w.Cells(k, 2) <> ""'如果第k行姓名等于Name,则将该行累加到汇总表第i行If LCase(Trim(w.Cells(k, 2))) = LCase(Trim(name)) Then'以下四行代码可以用循环的方式改写,更加方便r.Cells(i, 3) = r.Cells(i, 3) + w.Cells(k, 3)r.Cells(i, 4) = r.Cells(i, 4) + w.Cells(k, 4)r.Cells(i, 5) = r.Cells(i, 5) + w.Cells(k, 5)r.Cells(i, 6) = r.Cells(i, 6) + w.Cells(k, 6)End Ifk = k + 1LoopEnd IfNext wNext iEnd Sub
九九乘法表
Sub 九九乘法表()Dim a, bFor a = 1 To 9For b = 1 To 9If a < b ThenCells(a + 1, b) = ""ElseCells(a + 1, b) = a & "x" & b & "=" & a * bEnd IfNextNextEnd Sub
求平均分()
Sub 平均分()Dim i, 总分, 计数总分 = 0计数 = 0i = 2Do While Cells(i, 1) <> ""总分 = 总分 + Cells(i, 2)计数 = 计数 + 1i = i + 1LoopIf 计数 > 0 ThenCells(4, 4) = Int(总分 / 计数)End IfEnd Sub
生日函数
Function 生日(x)生日 = DateSerial(Mid(x, 7, 4), Mid(x, 11, 2), Mid(x, 13, 2))End Function
删除当前工作表中的所有形状:
Sub DeleteAllShapesInWorksheet()Dim shp As ShapeFor Each shp InActiveSheet.Shapesshp.DeleteNext shpEnd Sub
下面的代码删除指定类型形状(图表和单元格批注)
之外的所有形状:
Sub 删除指定类型形状()Dim shp As ShapeFor Each shp InActiveSheet.ShapesIf shp.Type <>msoChart And shp.Type <> msoComment Then'删除图标和批注shp.DeleteEnd IfNext shpEnd Sub

