Excel 惯用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)

Excel 常用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)
打开宏:

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 ,只可应用于当前页面。

例:

Excel 惯用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)

Excel 惯用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)

2.取满足条件的值连接成字符串

Excel 惯用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)

Excel 惯用的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