【Excel】自动化

查看 34|回复 1
作者:onedayday-wb   
各位大佬们,我现在有这么一个需求,还望大家帮忙看看
有这么一个工作簿,明天都会根据当天日期来新建一个sheet表,每天的sheet样式是固定一样的,然后还有一个总表,总表里面汇总每天的数据,那么问题来了,我要怎么在汇总表里面动态的获取每天的sheet里面的数据呢?也就是说,当我每天新建一个sheet表的时候,汇总表可以自动的根据条件(日期+班次+线体)去匹配当天sheet表里的数据。
本来打算用vlookup来匹配,但每天需要新建一个sheet表,就给我整不会了,所以来此求助大家当然,不管是函数还是VBA,还是python,技术不限,只要实现了就行
然后就是在图表工作表里面,有一个数据透视表,然后我想要筛选出最近7天的数据,让图表只显示最近7天的数据,怎么实现呢?不是日期组合功能哦
最后,附文件地址:https://www.lanzouw.com/iIIDs22atp7g     密码:    52pj
[i]

数据, 表里

wuaipojie_lbw   

1. 使用Excel VBA宏: 您可以创建一个VBA宏来动态链接每个新建的工作表数据到汇总表。这里有一个简单的VBA宏示例,它会自动更新汇总表中的数据:
Sub UpdateSummary()
    Dim wsSummary As Worksheet
    Dim wsDay As Worksheet
    Dim lastRow As Long
    Dim sheetName As String
    Dim matchDate As String
    Dim matchShift As String
    Dim matchLine As String
    ' 设置汇总表
    Set wsSummary = ThisWorkbook.Sheets("汇总表")
    ' 获取今天日期的字符串
    matchDate = Format(Date, "yyyy-mm-dd")
    ' 设置班次和线体条件
    matchShift = "早班" ' 示例
    matchLine = "线体1" ' 示例
    ' 根据日期生成工作表名称
    sheetName = "Data_" & matchDate
    ' 检查工作表是否存在
    On Error Resume Next
    Set wsDay = ThisWorkbook.Sheets(sheetName)
    On Error GoTo 0
    If Not wsDay Is Nothing Then
        ' 找到最后一行
        lastRow = wsSummary.Cells(wsSummary.Rows.Count, "A").End(xlUp).Row + 1
        ' 从当天工作表复制数据到汇总表
        wsDay.Range("A2:C10").Copy Destination:=wsSummary.Range("A" & lastRow)
    Else
        MsgBox "今天的工作表不存在。"
    End If
End Sub
您需要根据实际的工作表名称和数据范围调整代码,并将其放入Excel的VBA编辑器中。
2. 使用Python脚本: 如果您熟悉Python,可以使用Python的openpyxl库来操作Excel文件。以下是一个Python脚本示例,它会读取每个新建的工作表并更新汇总表:
from openpyxl import load_workbook
from datetime import datetime, timedelta
# 打开工作簿
wb = load_workbook('工作簿.xlsx')
# 获取汇总表
ws_summary = wb['汇总表']
# 获取今天的日期
today = datetime.today().strftime('%Y-%m-%d')
sheet_name = 'Data_' + today
# 检查工作表是否存在
if sheet_name in wb.sheetnames:
    ws_day = wb[sheet_name]
    # 假设每天的数据在A2:C10范围内
    for row in ws_day['A2:C10']:
        ws_summary.append([cell.value for cell in row])
else:
    print("今天的工作表不存在。")
# 保存工作簿
wb.save('工作簿.xlsx')
同样,您需要根据实际的工作表名称和数据范围调整脚本。
至于数据透视表筛选最近7天的数据,您可以使用VBA宏来设置数据透视表的筛选器。这里有一个简单的宏示例:
Sub FilterLast7Days()
    Dim wsPivot As Worksheet
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim startDate As Date
    ' 设置图表工作表
    Set wsPivot = ThisWorkbook.Sheets("图表工作表")
    ' 设置数据透视表
    Set pt = wsPivot.PivotTables("数据透视表")
    ' 计算开始日期
    startDate = Date - 7
    ' 设置日期筛选器
    Set pf = pt.PivotFields("日期")
    pf.ClearAllFilters
    pf.PivotFilters.Add Type:=xlDateBetween, Value1:=startDate, Value2:=Date
End Sub
请根据您的数据透视表的实际名称和字段名称进行调整。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部