千灵

Back

可根据注释自行调整参数

成品#

#

Sub 日期格式标准化()
    '将形如20231026的单元格改为2023/10/26标准日期格式
    For Each cell In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        cell.Value = Format(DateSerial(Left(cell.Value, 4), Mid(cell.Value, 5, 2), Right(cell.Value, 2)), "YYYY/MM/DD")
    Next cell
End Sub
vb
Sub 自动调整行高·列宽()
    Cells.EntireColumn.AutoFit
    Cells.EntireRow.AutoFit
End Sub
vb
Sub 跨列居中()
    Selection.UnMerge
    With Selection
        .HorizontalAlignment = xlCenterAcrossSelection
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub
vb
Sub 工作表名称替换()
    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.Name = Replace(ws.Name, "0501-0507", "19")
        ws.Name = Replace(ws.Name, "0508-0514", "20")
        ws.Name = Replace(ws.Name, "0515-0521", "21")
        ws.Name = Replace(ws.Name, "0522-0528", "22")
        ws.Name = Replace(ws.Name, "0529-0604", "23")
        ws.Name = Replace(ws.Name, "0605-0611", "24")
    Next ws
End Sub
vb

数据透视表#

Sub 刷新工作簿内所有数据透视表()
    Dim oWB  As Workbook
    Set oWB = Excel.ActiveWorkbook
    oWB.RefreshAll
End Sub
vb

#

Sub 折线统计图线条设为平滑线()
    Dim cht As ChartObject
    Dim ser As Series
    
    For Each cht In ActiveSheet.ChartObjects
        For Each ser In cht.Chart.SeriesCollection
            ser.Smooth = True
        Next ser
    Next cht
End Sub
vb
Sub 折线统计图线条设为带数据标记的折线图和平滑线()
    Dim cht As ChartObject
    Dim ser As Series

    For Each cht In ActiveSheet.ChartObjects
        For Each ser In cht.Chart.SeriesCollection
            If ser.ChartType = xlLine Then
                ser.ChartType = xlLineMarkers
                ser.Smooth = True
            End If
        Next ser
    Next cht
End Sub
vb
Sub 折线开端添加系列名称()
    Dim srs As Series
    For Each srs In ActiveChart.SeriesCollection
        srs.Points(1).Select
        Selection.ApplyDataLabels
        With Selection.DataLabel
            .Position = xlLabelPositionLeft
            .NumberFormat = "General"
            .Caption = srs.Name
        End With
    Next srs
End Sub
vb

单元格#

组件#

    '<禁用文档检查器 Begin>
    ActiveWorkbook.RemovePersonalInformation = False '禁止保存时弹出“请注意!文档的部分内容可能包含文档检查器无法删除的个人信息。”
    '<禁用文档检查器 End>
    '<保存当前工作簿 Begin>
    ActiveWorkbook.Save
    '<保存当前工作簿 End>
vb
    '<禁止屏幕刷新、警告框、更新链接窗口 Begin>
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.AskToUpdateLinks = False
    '<禁止屏幕刷新、警告框、更新链接窗口 End>
vb
    '<定位A列中首个空单元格 Begin>
    Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Select
    '<定位A列中首个空单元格 End>
    '<定位第22行中首个空单元格 Begin>
    Range("XFD22").End(xlToLeft).Offset(0, 1).Select
    '<定位第22行中首个空单元格 End>
    '<选择E2到D列末尾单元格区域 Begin>
    Range("E2:D" & [e65536].End(xlUp).Row).Select
    '<选择E2到D列末尾单元格区域 End>
    '<复制E2到BE列末尾单元格区域 Begin>
    Range("A1:BE" & [e65536].End(xlUp).Row).Copy
    '<复制E2到BE列末尾单元格区域 End>
vb
    '<删除非当前月数据 Begin>
    Dim currentMonth As String
    currentMonth = Format(Date, "mm")
    Dim i As Long
    For i = Range("D" & Rows.Count).End(xlUp).Row To 2 Step -1 '从 D 列的最后一行开始循环到 D2
        Dim month As String
        month = Mid(Cells(i, 4).Value, 6, 2) '截取 D 列当前行的月份
        If month <> currentMonth Then
          Rows(i).Delete
        End If
    Next i
    '<删除非当前月数据 End>
vb
    '<清除选中单元格公式 Begin>
    For Each Cell In ActiveSheet.UsedRange
    If Cell.HasFormula Then Cell.Formula = Cell.Value
    Next Cell
    '<清除选中单元格公式 End>
vb
    '<取消选中 Begin>
    SendKeys"{ESC}"
    '<取消选中 End>
vb
Sub 已使用单元格专题()
    With ActiveSheet
        .UsedRange.Columns("I").Value = .UsedRange.Columns("I").Value '将 I 列单元格格式设为常规格式
        .UsedRange.Columns("D").Select '选择 D 列已使用单元格
        .UsedRange.Columns("D").Offset(1).Select '选择 D 列向下偏移 1 行已使用单元格
        .UsedRange.Columns("D:E").Clear '清除 D 列、E 列已使用单元格数据
        .UsedRange.Offset(1).Clear '清除表头外所有已使用单元格数据
        .UsedRange.Copy '复制所有已使用单元格数据
    End With
    ActiveSheet.UsedRange.Columns("I").Value = ActiveSheet.UsedRange.Columns("I").Value '非 With 写法
End Sub
vb
    '<依据 1、3 列字段删除重复值 Begin>
    ActiveSheet.Range("表").RemoveDuplicates Columns:=Array(1, 3), Header:= _
        xlYes
    '<依据 1、3 列字段删除重复值 End>
vb
电商运营数据分析常用宏
https://qianling.pw/vba/
Author 千灵
Published at November 24, 2022
Comment seems to stuck. Try to refresh?✨