Excel 惯用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)
Excel 常用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)
打开宏:
查看宏
1.拆分单元格并自动填充数据
Sub 拆分填充() ' ' 拆分填充 宏 ' ' 快捷键: Ctrl+d' Dim x As Range For Each x In ActiveSheet.UsedRange.Cells If x.MergeCells Then x.Select x.UnMerge Selection.Value = x.Value End If Next x End Sub
注意:以上代码的有,快捷键: Ctrl+d ,只可应用于当前页面。
例:
2.取满足条件的值连接成字符串
代码:
Sub 取电表() '注意看你的Excel是否是Sheet1和Sheet2,如果不是请修改一下哦 Dim iRow As Integer Dim sUserID As String Dim iCount As Integer Dim sResult As String For iRow = 2 To Sheet1.UsedRange.Count sUserID = Sheet1.UsedRange.Cells(iRow, 2) '这里的那个2可能是你要修改的地方哦,我这里是在用Sheet1的“原用户编号”(第2列)与Sheet2的“户号”(第6列)比较哦 If sUserID = Empty Then GoTo II sResult = ddf(sUserID, iRow) Next II: ActiveWorkbook.Save End Sub Function ddf(FUserID As String, FRow As Integer) Dim sResult As String Dim sAmmeters As String Dim iRow As Integer Dim UserID As String Dim AmmeterCount As Integer AmmeterCount = 0 For iRow = 2 To Sheet2.UsedRange.Count sAmmeters = Sheet2.UsedRange.Cells(iRow, 10) '这里的那个“10”可能是你要修改的地方哦,我这里是在取Sheet2的“出厂编号”(第10列)的值哦 UserID = Sheet2.UsedRange.Cells(iRow, 6) '这里的那个“6”可能是你要修改的地方哦,我这里是在用Sheet1的“原用户编号”(第2列)与Sheet2的“户号”(第6列)比较哦 If UserID = Empty Then GoTo III If UserID = FUserID Then sResult = sResult + sAmmeters + "/" '连接字符串 AmmeterCount = AmmeterCount + 1 '连接字符串的次数 End If Next III: If (sResult <> Empty) Then Sheet1.UsedRange.Cells(FRow, 14) = sResult '连接字符串的结果,放到哪个单元格中,“电表” Sheet1.UsedRange.Cells(FRow, 15) = AmmeterCount '连接字符串的次数,放到哪个单元格中,“电表个数” End If End Function