VBA个人总结

Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
   If Sheets(j).Name <> ActiveSheet.Name Then
       X = Range("A65536").End(xlUp).Row + 1
       Sheets(j).UsedRange.Copy Cells(X, 1)
   End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub

Sub 多行多列求和()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
m = Sheets(1).[a65536].End(xlUp).Row
For i = 3To m Step 3
For j = 3To 6
Cells(i, j) = Cells(i - 1, j) + Cells(i - 2, j)
Next j
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "@风里孜然味"
End Sub

Sub 每隔两行插入一行()
Dim i
For i = 1 To Sheet1.Range("a3000").End(3).Row * 3
    Rows(i & ":" & i + 0).Select
i = i + 2
    Selection.Insert Shift:=xlDown
    Next
End Sub


  Sub 查找并在该行后插入一行()
      Dim rng As Range, rng1 As Range, rng2 As Range
      Set rng1 = Cells.Find("中国", , , xlWhole) '完全匹配
      Set rng = rng1
      Set rng2 = rng1
      Do
        Set rng2 = Cells.FindNext(rng2)
If rng2.Address = rng1.Address Then
rng.Select
For Each c In Selection.Rows
Rows(c.Row + 1).Select
Selection.Insert Shift:=xlDown
Next
        End
        Else
            Set rng = Union(rng, rng2)
        End If
      Loop
  End Sub

Sub 在查找的行下插入一行byLzf()
Dim k, i, s
s = Range("a65536").End(3).Row
k = 1
For i = 1 To 10000 Step 1
    k = Range("b" & k & ":a" & s).Find("合计", , , xlWhole).Row
    Rows(k + 1).Insert Shift:=xlDown
    k = k + 1
    s = s + 1
    If k >= s Or Range("b" & k & ":a" & s).Find("合计", , , xlWhole) Is Nothing Then
       Exit For
    End If
Next
MsgBox "结束"
End Sub

//首字母
Function pinyin(p As String) As String
i = Asc(p)
Select Case i
Case -20319 To -20284: pinyin = "A"
Case -20283 To -19776: pinyin = "B"
Case -19775 To -19219: pinyin = "C"
Case -19218 To -18711: pinyin = "D"
Case -18710 To -18527: pinyin = "E"
Case -18526 To -18240: pinyin = "F"
Case -18239 To -17923: pinyin = "G"
Case -17922 To -17418: pinyin = "H"
Case -17417 To -16475: pinyin = "J"
Case -16474 To -16213: pinyin = "K"
Case -16212 To -15641: pinyin = "L"
Case -15640 To -15166: pinyin = "M"
Case -15165 To -14923: pinyin = "N"
Case -14922 To -14915: pinyin = "O"
Case -14914 To -14631: pinyin = "P"
Case -14630 To -14150: pinyin = "Q"
Case -14149 To -14091: pinyin = "R"
Case -14090 To -13319: pinyin = "S"
Case -13318 To -12839: pinyin = "T"
Case -12838 To -12557: pinyin = "W"
Case -12556 To -11848: pinyin = "X"
Case -11847 To -11056: pinyin = "Y"
Case -11055 To -2050: pinyin = "Z"
Case Else: pinyin = p
End Select
End Function
Function getpy(str)
For i = 1 To Len(str)
getpy = getpy & pinyin(Mid(str, i, 1))
Next i
End Function

Function MLOOKUP(str, rng)  '单元格内匹配字典表
For i = 1 To Len(str)
str = Replace(str, rng(i, 1), rng(i, 2))
Next i
MLOOKUP = str
End Function

Function GNum(str) '提取数字
    Dim regx, Strnew$
    Dim oMatches As Object
    Set regx = CreateObject("vbscript.regexp")
    regx.Pattern = "\d+"
    regx.Global = True '匹配所有
    Set oMatches = regx.Execute(str) '查找值的集合
    For i = 0 To oMatches.count - 1
    Strnew = Strnew + oMatches.Item(i).Value + ","
    Next
   Strnew = Left(Strnew, Len(Strnew) - 1)
   GNum = Strnew
End Function

Sub 合并相同内容单元格()
Dim rng As Range
Dim tem
Set rng = Selection
tem = rng.Count
    Application.DisplayAlerts = False
    For i = tem To 1 Step -1
        If rng.Cells(i, 1) = rng.Cells(i - 1, 1) Then
            Range(rng.Cells(i, 1), rng.Cells(i - 1, 1)).Merge
        End If
    Next
    Application.DisplayAlerts = True
End Sub

=COUNTA($C$17:C17)合并单元格后的编号

Function VVlOOKUP(str, rng) 'VlOOKUP多个
  Dim MRG As Range, AAA As String
  Set MRG = rng.Find(str)
  AAA = MRG.Address
  ss = Sheets(4).Cells(MRG.Row, MRG.Column + 1) + ","
  Do
    Set MRG = rng.FindNext(MRG)
    ss = ss + Sheets(4).Cells(MRG.Row, MRG.Column + 1) + ","
  Loop Until MRG.Address = AAA
  GNum = ss
End Function
Function MLOOKUP(str, rng)  '单元格内批量替换字典表 (有待改进)
For i = 1 To Len(str)
str2 = Replace(str, rng(i, 1), rng(i, 2))
If str2 <> str Then
Exit For
Else
str2 = NaN
End If
Next i
MLOOKUP = str2
End Function


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值