大家好!终于放假了,知了祝大家双节快乐!~
今天分享的案例非常的经典,它让我首次见识了VBA的魅力。也是从那会儿开始,命运的齿轮开始转动,走上了学习VBA的道路。
它就是:合并工作表。
问题很简单:就是把一个工作簿里的所有sheet合并到一个总表里边。
如下图:将 4个班级的信息合并。
以下是VBA代码(长按复制,可向右托动),详细解析请看文末视频。
方法一:复制粘贴12345678910111213141516171819Sub 复制粘贴() Dim sht As Worksheet Dim zongSht As Worksheet Set zongSht = Worksheets("总表") Dim rowsCount, zongRows For Each sht In Worksheets If sht.Name <> "总表" Then With sht rowsCount = .[a65536].End(3).Row ...
大家好!今天将为大家介绍在Excel中如何实现下拉多选功能,让数据输入更加灵活高效。
下拉多选功能不仅提高了数据输入的灵活性,还减少了输入错误的可能性,为我们的数据处理工作带来了更高的效率。
也许你见过使用表单控件的方式实现下拉多选,但是通过数据验证和VBA,我们同样能够轻松创建具有下拉多选功能的工作表。
以下是VBA代码,详细解析请看文末视频。
1234567891011121314151617181920212223242526272829303132333435363738Private Sub Worksheet_Change(ByVal Target As Range) Dim rngDV As Range Dim oldVal As String Dim newVal As String Dim fenGeFu As String If Target.CountLarge > 1 Then Exit Sub fenGeFu = "," '规定用逗号分隔 On Error Resume Next ...
大家好!昨天视频放错了,今天重新发一下。图片
这次分享的是合并系列的最后一个案例:汇总工作簿。
打个比方:把多个工作簿中的每个Sheet,汇总到一个工作簿里,汇总完之后是所有的Sheet都在同一个工作簿里。
这次使用了Dir函数,以下是VBA代码。详细解析请看文末的视频。
‘Dir函数:返回的是指定路径下【文件】或者【文件夹】的名称。如果不存在,就返回 “” 字符串‘Dir 函数一般搭配 do while 循环遍历文件,结束的条件就是Dir返回空值。
‘举例:‘fileName1 = Dir(“E:\test*.xlsx”) 查找E盘test文件夹里边的xlsx工作簿,将第一个工作簿名称返回‘fileName2 = Dir 查找下一个,并且不需要写参数‘fileName3 = Dir 查找下一个,并且不需要写参数‘fileName4 = Dir 查找下一个,并且不需要写参数‘…… ...
大家好!这次分享的是非常经典的案例:合并工作簿。
相信大家已经很熟悉这个问题了,就是把多个工作簿里的工作表合并到同一个sheet里。
这次同样分享两个方法,以下是VBA代码。详细解析请看文末的视频。
自定义函数:
1234567891011121314151617Private Function filelist(folderspec, Optional pstr = "*.txt") On Error GoTo errline Dim fs, f, f1, fc, i, farr Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(folderspec) Set fc = f.Files ReDim farr(1 To fc.Count) For Each f1 In fc If f1.Name Like pstr And Not f1.Name Like "*~$*" T ...
大家好!书接上文,继续聊一聊拆分工作表的第二个方法。
众所周知,字典中的值不仅可以是数字、字符串,还可以是数组和对象!
上一个方法是将数组装到了字典里,这第二个方法想必大家已经猜到了,就是把对象装进字典里。
首先简单介绍一下Union函数的使用方法。Union:返回两个或多个区域的合并区域。
语法: Union(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30) AS Range参数: Arg1 必需 Range类型。 Arg2 必需 Range类型。 Arg3– Arg30 可选 Variant类型。返回: Range类型。另外一点需要强调的是,VBA中给对象变量赋值使用Set,并且Set不能省略。
以下是VBA代码。 ...
大家好!如何按照表中的某一列,拆分成独立的Sheet? 如下:
这是一个特别常见常用的问题,本期分享本人用的最多的两个方法中的第一个。
因为确实不太容易理解,所以分为两部分。
这个方法非常的实用,在其他地方也可以发挥很大的作用,所以墙裂推荐大家掌握!
以下是VBA代码。详细解析请看文末的视频。
12345678910111213141516171819202122232425262728293031323334353637383940Sub 数组装进字典() Dim i, j, k Dim ar, tmp() Dim d As Object, kw$ Set d = CreateObject("Scripting.Dictionary") 'd.CompareMode = vbTextCompare '不区分大小写 ar = Range("a1:e" & [a65536].End(3).Row) Dim irow For i = 2 To UBound(ar) ...
大家好!
上一篇内容分享了,用VBA合并单元格的两个方法。本期就来看一下如何取消合并的单元格。
同样的,WPS内置了一键取消合并单元格并填充内容的功能,而Excel用户只能流下羡慕的泪水。
这次介绍两个方法,来实现和WPS一模一样的功能。
第一个方法:使用录制宏的操作,把平时手动取消合并的操作记录下来,并对代码加以修改,来达到目的。第二个方法:使用的循环单元格判断是否合并的方法,其中有几个常用的属性是我们必须要了解掌握的。
两个方法都比较简单。大家可以根据实际情况,酌情选择适用的方法。
以下是VBA代码。详细解析请看文末的视频。
方法一:1234567Sub 宏2() Range("a1:a20").UnMerge Range("a1:a20").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" Range("a1:a20").Value = Range("a1:a20").ValueEnd Sub
方法二 ...
大家好!
通过本次和之前几次的分享。对工作表、工作簿的拆分、合并都做了最基础的介绍以及案例演示。
而面对实际工作中经常遇到的工作表、工作簿的合并拆分问题,相信大家通过对这几个案例的交汇融合,基本上都可以找到对应的解决方案。
今天分享的是拆分系列的最有一项内容:拆分工作簿。就是把一个工作簿中的所有Sheet拆分成一个一个的独立的工作簿。
通过今天的案例,你将掌握工作表对象的Move和Copy方法。听起来很陌生,其实是你经常在用的一个很普通的功能:
语法: Sheet.Copy([Before],[After])’参数可选,非必须 Sheet.Move([Before],[After])’参数可选,非必须注意: 如果不填参数,将会把Sheet移动或复制到一个新的工作簿中以下是VBA代码。详细解析请看文末的视频。
123456789101112131415161718192021Option ExplicitSub 拆分工作簿() Dim sht As Worksheet Dim filePath filePath = ThisWorkbook.Path & ...
大家好!
如果你是文职类工作,可能会遇到下面这种情况:
经常面对各种各样的表格,并且很多都是制式的,里边又充满个各种各样的格式,其中就有今天的主角儿:合并单元格。
而你的工作看似也不复杂,就是把合并单元格中显示不全的内容,通过调整单元格的大小来显示出来。
这种痛苦,只有手动调整过的人能懂。
所以,通过今天的案例讲解,将解决你的烦恼,文末视频对这个过程做了详细的讲解演示,希望对你有帮助。
以下是VBA代码。详细解析请看文末的视频。
调整合并单元格行高:
1234567891011121314151617181920212223242526272829303132333435363738Sub 调整合并单元格行高() Dim cel As Range Dim rng As Range Dim n, r, c Dim mergeWidth, newHeight, celWidth Set rng = Range("B4") For Each cel In rng If cel.MergeCells Then ...
大家好!今天回答一位粉丝朋友的提问。
问题是:将多个工作簿中的所有工作表合并汇总,要求名称相同的工作表内容要合并在一起,名称不同的要单独作为一个工作表。
为此,我模拟了一份数据,结构如下图:
这个问题,其实是我之前分享的【案例011合并工作表】和【案例013汇总工作簿】的融合版。方法非常的相似。其实对于工作簿和工作表的合并与拆分的操作,之前的案例基本都分享完了。只要融会贯通,举一反三,相信这种问题将迎刃而解。
效果就不演示了,以下是VBA代码。详细解析请看文末的视频。
123456789101112131415161718192021222324252627282930313233343536Option ExplicitSub 汇总合并工作簿() Dim shtName Dim sht As Worksheet For Each sht In ThisWorkbook.Worksheets shtName = shtName & "," & sht.Name Next Dim filePath$, fi ...
