抖音数据处理宏分享

使用数据处理宏简化抖音直播各类报表制作流程,缩减工作时间,所有代码均已模块化标注,可按需修改。


使用方法参见 Microsoft 官方文档:运行宏,可随意组合各模块、调整参数获取所需数据。

抖店数据处理

本程序适用于「抖音电商罗盘-商家视角-直播-直播列表-直播间明细-下载明细」所导出报表。

功能:格式标准化、冗余数据清除、未结束场次数据清除、顺序排列、分列、冻结窗格、行列插入计算。

效果如图:
处理前
处理后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Sub 抖店数据处理()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<清除当日未结束场次数据 Begin>
Dim yearValue As Integer
Dim lastRow As Long
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
For i = lastRow To 2 Step -1
yearValue = Year(Cells(i, "E").Value)
If yearValue = 1970 Then
Cells(i, "E").EntireRow.Delete
End If
Next i
'<清除当日未结束场次数据 End>
'<将 F 列到 AM 列的单元格格式设为常规格式 Begin>
ActiveSheet.usedRange.Columns("F:AO").Value = ActiveSheet.usedRange.Columns("F:AO").Value
'<将 F 列到 AM 列的单元格格式设为常规格式 End>
'<筛选-按 D 列值升序排列 Begin>
Cells.AutoFilter
Application.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _
"D1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With Application.ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'<筛选-按 D 列值升序排列 End>
'<在 E 列和 G 列前插入新列 Begin>
Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("G:G").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'<在 E 列和 G 列前插入新列 End>
'<将 D 列和 F 列按空格分列 Begin>
Columns("D:D").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
'<将 D 列和 F 列按空格分列 End>
'<将 D 列、E 列、F 列列头赋值为“直播日期”、“开始时间”、“结束时间” Begin>
Range("D1").Select
ActiveCell.FormulaR1C1 = "直播日期"
Range("E1").Select
ActiveCell.FormulaR1C1 = "开始时间"
Range("G1").Select
ActiveCell.FormulaR1C1 = "结束时间"
'<将 D 列、E 列、F 列列头赋值为“直播日期”、“开始时间”、“结束时间” End>
'<直播时长(小时)列插入、计算 Begin>
Columns("I:I").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I1").Select
ActiveCell.FormulaR1C1 = "直播时长(小时)"
Range("I2:I" & [e65536].End(xlUp).Row).Select
selection.FormulaR1C1 = "=RC[-1]/60"
'<直播时长(小时)列插入、计算 End>
'<人均观看时长(秒)列插入、计算 Begin>
Columns("Q:Q").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("Q1").Select
ActiveCell.FormulaR1C1 = "人均观看时长(秒)"
Range("Q2:Q" & [e65536].End(xlUp).Row).Select
selection.FormulaR1C1 = "=RC[1]*60"
'<人均观看时长(秒)列插入、计算 End>
'<直播间成交金额(含预售)列插入、计算 Begin>
Columns("AD:AD").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AD1").Select
ActiveCell.FormulaR1C1 = "直播间成交金额(含预售)"
Range("AD2:AD" & [e65536].End(xlUp).Row).Select
selection.FormulaR1C1 = "=RC[1]+RC[16]"
'<直播间成交金额(含预售)列插入、计算 End>
'<直播间成交订单数(含预售)列插入、计算 Begin>
Columns("AC:AC").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AC1").Select
ActiveCell.FormulaR1C1 = "直播间成交订单数(含预售)"
Range("AC2:AC" & [e65536].End(xlUp).Row).Select
selection.FormulaR1C1 = "=RC[1]+RC[17]"
'<直播间成交订单数(含预售)列插入、计算 End>
'<清除公式 Begin>
With ActiveSheet
.usedRange.Columns("I").Value = .usedRange.Columns("I").Value
.usedRange.Columns("Q").Value = .usedRange.Columns("Q").Value
.usedRange.Columns("AC").Value = .usedRange.Columns("AC").Value
.usedRange.Columns("AE").Value = .usedRange.Columns("AE").Value
End With
'<清除公式 End>
'<将 D 列、S 列的单元格格式分别设为保留一位小数的数字、百分比 Begin>
Range("I2:I" & [e65536].End(xlUp).Row).NumberFormatLocal = "0.0"
Range("W2:W" & [e65536].End(xlUp).Row).NumberFormatLocal = "0.0%"
'<将 D 列、S 列的单元格格式分别设为保留一位小数的数字、百分比 End>
'<自动调整行高、列宽 Begin>
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
'<自动调整行高、列宽 End>
'<隐藏无关列 Begin>
Range("A:C,F:F,H:H,K:K,M:M,R:R,T:T,V:V,X:X,AA:AB,AD:AD,AF:AH,AJ:AJ,AL:AU").Select
selection.EntireColumn.Hidden = True
'<隐藏无关列 End>
'<冻结窗格 Begin>
Range("E2").Select
ActiveWindow.FreezePanes = True
'<冻结窗格 End>
'<复位 Begin>
Range("D1").Select
'<复位 End>
'<保存 Begin>
ActiveWorkbook.Save
'<保存 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub

POWER QUERY 实现:

1
2
3
4
5
6
7
8
9
10
11
let
源 = Excel.CurrentWorkbook(){[Name="数据源"]}[Content],
直播开始时间分列 = Table.SplitColumn(源, "直播开始时间", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.None, false), {"直播开始日期", "直播开始时间"}),
直播结束时间分列 = Table.SplitColumn(直播开始时间分列, "直播结束时间", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.None, false), {"直播结束日期", "直播结束时间"}),
#"更改直播开始日期、直播开始时间、直播结束时间格式" = Table.TransformColumnTypes(直播结束时间分列,{{"直播开始日期", type date},{"直播开始时间", type time},{"直播结束时间", type time}}),
#"直播时长(小时)新建列、计算" = Table.AddColumn(#"更改直播开始日期、直播开始时间、直播结束时间格式", "直播时长(小时)", each [#"直播时长(分钟)"]/60),
#"人均观看时长(秒)新建列、计算" = Table.AddColumn(#"直播时长(小时)新建列、计算", "人均观看时长(秒)", each [#"人均观看时长(分钟)"]*60),
#"直播间成交金额(含预售)新建列、计算" = Table.AddColumn(#"人均观看时长(秒)新建列、计算", "直播间成交金额(含预售)", each [直播间成交金额]+[预售全款金额]),
#"直播间成交订单数(含预售)新建列、计算" = Table.AddColumn(#"直播间成交金额(含预售)新建列、计算", "直播间成交订单数(含预售)", each [直播间成交订单数]+[预售订单数])
in
#"直播间成交订单数(含预售)新建列、计算"

达人数据处理

本程序适用于「抖音电商罗盘-达人视角-直播明细-下载明细」所导出报表。

功能:时间顺序排列数据、自动调整列宽行高。

效果如图:
处理前
处理后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub 达人数据处理()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<筛选-按 C 列值升序排列 Begin>
Cells.AutoFilter
Application.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _
"C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With Application.ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'<筛选-按 C 列值升序排列 End>
'<自动调整行高、列宽 Begin>
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
'<自动调整行高、列宽 End>
'<复位 Begin>
Range("A1").Select
'<复位 End>
'<保存 Begin>
ActiveWorkbook.Save
'<保存 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub

流量数据处理

本程序适用于「抖音电商罗盘-商家视角-直播-直播列表-直播间明细-数据详情-下载」所导出报表。

功能:自动匹配直播间流量数据并清除公式。

处理效果

需提前预备以下匹配源,全选复制即可粘贴至表格内:

渠道 12月1日
推荐feed
直播广场
同城
其他推荐场景
短视频引流
关注
搜索
个人主页&店铺&橱窗
抖音商城推荐
活动页
头条西瓜
其他
小店随心推
品牌广告
千川品牌广告
千川PC版
其他广告

请按注释设置 ChDirXFDRC 三项参数再运行本程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub 流量数据处理·观看次数()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<更新观看次数 Begin>
ChDir "C:\Users\Haku\Downloads" '此处设置为下载文件夹地址
Range("XFD21").End(xlToLeft).Offset(0, 1).Resize(17, 1).Select 'XFD后数字设置为「推荐feed」单元格所在行号
Selection.FormulaR1C1 = _
"=VLOOKUP(RC1,'[直播间详情页.xlsx]流量分析-渠道分析'!C1:C3,3,FALSE)" 'RC后数字设置为「匹配数据列」所在列号
'<更新观看次数 End>
'<清除公式 Begin>
Selection.Value = Selection.Value
'<清除公式 End>
'<替换汉字万 Begin>
Selection.Replace What:="万", Replacement:="e4", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'<替换汉字万 End>
'<将单元格格式设为不保留小数的数字 Begin>
Selection.NumberFormatLocal = "0"
'<将单元格格式设为不保留小数的数字 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub 流量数据处理·成交订单数()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<更新成交订单数 Begin>
ChDir "C:\Users\Haku\Downloads" '此处设置为下载文件夹地址
Range("XFD61").End(xlToLeft).Offset(0, 1).Resize(17, 1).Select 'XFD后数字设置为「推荐feed」单元格所在行号
Selection.FormulaR1C1 = _
"=VLOOKUP(RC1,'[直播间详情页.xlsx]流量分析-渠道分析'!C1:C7,7,FALSE)" 'RC后数字设置为「匹配数据列」所在列号
'<更新成交订单数 End>
'<清除公式 Begin>
Selection.Value = Selection.Value
'<清除公式 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub 流量数据处理·成交金额()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<更新成交金额 Begin>
ChDir "C:\Users\Haku\Downloads" '此处设置为下载文件夹地址
Range("XFD101").End(xlToLeft).Offset(0, 1).Resize(17, 1).Select 'XFD后数字设置为「推荐feed」单元格所在行号
Selection.FormulaR1C1 = _
"=VLOOKUP(RC1,'[直播间详情页.xlsx]流量分析-渠道分析'!C1:C6,6,FALSE)" 'RC后数字设置为「匹配数据列」所在列号
'<更新成交金额 End>
'<清除公式 Begin>
Selection.Value = Selection.Value
'<清除公式 End>
'<去除货币符号 Begin>
Dim rng As Range
For Each rng In Selection '范围为选区
rng.Value = Mid(rng.Value, 2) '从第二个字符开始截取,即去掉货币符号
Next rng
'<去除货币符号 End>
'<将单元格格式设为万 Begin>
Selection.NumberFormatLocal = "0\.0,万"
'<将单元格格式设为万 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub 流量数据处理·人均观看时长()
Dim rng As Range
Dim cell As Range
Dim arr As Variant
Dim min As Long
Dim sec As Long
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<更新人均观看时长 Begin>
ChDir "C:\Users\Haku\Downloads" '此处设置为下载文件夹地址
Range("XFD141").End(xlToLeft).Offset(0, 1).Resize(17, 1).Select 'XFD后数字设置为「推荐feed」单元格所在行号
Selection.FormulaR1C1 = _
"=VLOOKUP(RC1,'[直播间详情页.xlsx]流量分析-渠道分析'!C1:C2,2,FALSE)" 'RC后数字设置为「匹配数据列」所在列号
'<更新人均观看时长 End>
'<清除公式 Begin>
Selection.Value = Selection.Value
'<清除公式 End>
'<计算时长 Begin>
Set rng = Selection '设置转换范围为选区
For Each cell In rng '遍历每个单元格
If InStr(cell.Value, "分钟") > 0 Then '检查是否包含"分钟"
arr = Split(cell.Value, "分钟") '分割文本
min = Val(arr(0)) '转换为分钟数
If InStr(arr(1), "秒") > 0 Then '检查是否包含"秒"
sec = Val(Left(arr(1), Len(arr(1)) - 1)) '提取并转换为秒数
Else '不包含"秒"
sec = 0 '设置秒数为0
End If
Else '不包含"分钟"
min = 0 '设置分钟数为0
sec = Val(Left(cell.Value, Len(cell.Value) - 1)) '提取并转换为秒数
End If
cell.Value = min * 60 + sec '写入值
Next cell
'<计算时长 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub 流量数据处理·互动率()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<更新互动率 Begin>
ChDir "C:\Users\Haku\Downloads" '此处设置为下载文件夹地址
Range("XFD161").End(xlToLeft).Offset(0, 1).Resize(17, 1).Select 'XFD后数字设置为「推荐feed」单元格所在行号
Selection.FormulaR1C1 = _
"=VLOOKUP(RC1,'[直播间详情页.xlsx]流量分析-渠道分析'!C1:C5,5,FALSE)" 'RC后数字设置为「匹配数据列」所在列号
'<更新互动率 End>
'<清除公式 Begin>
Selection.Value = Selection.Value
'<清除公式 End>
'<将单元格格式设为百分比 Begin>
Selection.NumberFormatLocal = "0%"
'<将单元格格式设为百分比 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub

千川数据处理

本程序适用于「巨量千川-竞价推广-计划详情-数据-下载数据表格」所导出报表。

功能:时间顺序排列数据、去除表头、复制数据。

效果如图:
处理前
处理后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub 千川数据处理()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<清除汇总行 Begin>
Dim c As Range
Dim r As Long
For r = ActiveSheet.usedRange.Rows.Count To 1 Step -1
If Left(Cells(r, 3).Value, 2) = "汇总" Then
Rows(r).Delete
End If
Next r
'<清除汇总行 End>
'<调整日期格式 Begin>
With ActiveSheet
.usedRange.Columns("C").Offset(1).Select '选择 D 列向下偏移 1 行已使用单元格
End With
selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
'<调整日期格式 End>
'<将 A 列单元格格式设为文本 Begin>
Range("A2:A" & [e65536].End(xlUp).Row).NumberFormatLocal = "@"
'<将 A 列单元格格式设为文本 End>
'<保存当前工作簿 Begin>
ActiveWorkbook.Save
'<保存当前工作簿 End>
'<复制全域数据 Begin>
With ActiveSheet
.usedRange.Offset(1).Copy
End With
'<复制全域数据 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub

飞瓜数据处理

本程序适用于「飞瓜数据(抖音版)-品牌详情-商品分析」所导出报表。

功能:格式标准化、冗余数据清除、分列、销量销额均值计算。

效果如图:
处理前
处理后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Sub 飞瓜数据处理()
'<禁止屏幕刷新 Begin>
Application.ScreenUpdating = False
'<禁止屏幕刷新 End>
'<删除无用数据 Begin>
Rows("1:1").Delete Shift:=xlUp
Columns("B:B").Delete Shift:=xlToLeft
Columns("D:E").Delete Shift:=xlToLeft
Columns("F:I").Delete Shift:=xlToLeft
'<删除无用数据 End>
'<插入列 Begin>
Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'<插入列 End>
'<替换汉字万 Begin>
Columns("D:D").Select
Cells.Replace What:="w", Replacement:="e4", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False, _
FormulaVersion:=xlReplaceFormula2
'<替换汉字万 End>
'<分列 Begin>
Columns("D:D").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
'<分列 End>
'<预估销售额、预估销量均值列插入、计算 Begin>
Columns("F:F").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("F2:F" & [e65536].End(xlUp).Row).FormulaR1C1 = "=(RC[-2]+RC[-1])/2"
Range("I2:I" & [e65536].End(xlUp).Row).FormulaR1C1 = "=(RC[-2]+RC[-1])/2"
'<预估销售额、预估销量均值列插入、计算 End>
'<预估销售额、预估销量列列头 Begin>
Range("I1").Select
ActiveCell.FormulaR1C1 = "预估销量"
Range("F1").Select
ActiveCell.FormulaR1C1 = "预估销售额"
'<预估销售额、预估销量列列头 End>
'<清除公式 Begin>
ActiveSheet.UsedRange.Columns("F").Value = ActiveSheet.UsedRange.Columns("F").Value
ActiveSheet.UsedRange.Columns("I").Value = ActiveSheet.UsedRange.Columns("I").Value
'<清除公式 End>
'<将 F 列到 AM 列的单元格格式设为常规格式 Begin>
ActiveSheet.UsedRange.Columns("C").Value = ActiveSheet.UsedRange.Columns("C").Value
'<将 F 列到 AM 列的单元格格式设为常规格式 End>
'<删除无用列 Begin>
Columns("D:E").Delete Shift:=xlToLeft
Columns("E:F").Delete Shift:=xlToLeft
'<删除无用列 End>
'<调整数值格式 Begin>
Range("D2:D" & [e65536].End(xlUp).Row).NumberFormatLocal = "0"
'<调整数值格式 End>
'<自动调整行高、列宽 Begin>
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
'<自动调整行高、列宽 End>
'<复位 Begin>
Range("A1").Select
'<复位 End>
'<保存 Begin>
ActiveWorkbook.Save
'<保存 End>
'<启用屏幕刷新 Begin>
Application.ScreenUpdating = True
'<启用屏幕刷新 End>
End Sub