EXCEL 我想用日期命名自动建立多个工作表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL 我想用日期命名自动建立多个工作表相关的知识,希望对你有一定的参考价值。
我想做多个工作表,按照日期命名,内容一样的,自动建立,请问应该怎么做?
首先建一个工作表,里面填写需要创建的工作表的所有名字
生成数据透视表。单击数据区域任意单元格,【插入】【数据透视表】,在【创建数据透视表】对话框中选择放置数据透视表的位置:现有工作表C1单元格。
在弹出的【数据透视表字段列表】对话框中,将“生成以下名称的工作表”字段拖动到报表筛选区域,关闭【数据透视表字段列表】
生成报表筛选页。单击C1单元格,依次单击【选项】选项卡,【数据透视表】命令组,单击【选项】右侧的三角按钮,在下拉列表中单击【显示报表筛选页】,弹出【显示报表筛选页】对话框。
保留默认设置,单击确定。
清除工作表内容。好多的工作表瞬间就生成了,但是新生成的工作表里都有一个数据透视表,需要把它清除掉。右键单击工作表标签,在下拉列表中选择【选定全部工作表】。
单击工作表左上角的“全选按钮”,再依次单击【开始】选项卡,【编辑】命令组,【清除】按钮右侧的小三角,在下拉列表中选择【全部清除】。
最后,右键单击工作表标签,【取消组合工作表】,完成。
For i = 0 To 50
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format$(DateSerial(2014, 1, 1) + i, "yyyy-mm-dd")
Next
若是所有新表都和“Sheet1”表的内容一样,可以复制“Sheet1”表,将循环中的两句改为
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format$(DateSerial(2014, 1, 1) + i, "yyyy-mm-dd")
即可本回答被提问者和网友采纳 参考技术B 可以用VBA代码来实现
如何合并多个工作表并用工作表名称重命名列名?
【中文标题】如何合并多个工作表并用工作表名称重命名列名?【英文标题】:How to merge multiple sheets and rename column names with the names of the sheet names? 【发布时间】:2021-08-23 15:52:56 【问题描述】:我有以下数据。都在一个excel文件中。
Sheet name: may2019
Productivity Count
Date : 01-Apr-2020 00:00 to 30-Apr-2020 23:59
Date Type: Finalized Date Modality: All
Name MR DX CT US MG BMD TOTAL
Svetlana 29 275 101 126 5 5 541
Kate 32 652 67 171 1 0 923
Andrew 0 452 0 259 1 0 712
Tom 50 461 61 104 4 0 680
Maya 0 353 0 406 0 0 759
Ben 0 1009 0 143 0 0 1152
Justin 0 2 9 0 1 9 21
Total 111 3204 238 1209 12 14 4788
Sheet Name: June 2020
Productivity Count
Date : 01-Jun-2019 00:00 to 30-Jun-2019 23:59
Date Type: Finalized Date Modality: All
NAme US DX CT MR MG BMD TOTAL
Svetlana 4 0 17 6 0 4 31
Kate 158 526 64 48 1 0 797
Andrew 154 230 0 0 0 0 384
Tom 1 0 19 20 2 8 50
Maya 260 467 0 0 1 1 729
Ben 169 530 59 40 3 0 801
Justin 125 164 0 0 4 0 293
Alvin 0 1 0 0 0 0 1
Total 871 1918 159 114 11 13 3086
我想将所有工作表合并到一个工作表中,删除所有工作表的前 3 行,这就是我正在寻找的输出
Sl.No Name US_jun2019 DX_jun2019 CT_jun2019 MR_jun2019 MG_jun2019 BMD_jun2019 TOTAL_jun2019 MR_may2019 DX_may2019 CT_may2019 US_may2019 MG_may2019 BMD_may2019 TOTAL_may2019
1 Svetlana 4 0 17 6 0 4 31 29 275 101 126 5 5 541
2 Kate 158 526 64 48 1 0 797 32 652 67 171 1 0 923
3 Andrew 154 230 0 0 0 0 384 0 353 0 406 0 0 759
4 Tom 1 0 19 20 2 8 50 0 2 9 0 1 9 21
5 Maya 260 467 0 0 1 1 729 0 1009 0 143 0 0 1152
6 Ben 169 530 59 40 3 0 801 50 461 61 104 4 0 680
7 Justin 125 164 0 0 4 0 293 0 452 0 259 1 0 712
8 Alvin 0 1 0 0 0 0 1 #N/A #N/A #N/A #N/A #N/A #N/A #N/A
我尝试了以下代码,但输出不是我要查找的。p>
df=pd.concat(df,sort=False)
df= df.drop(df.index[[0,1]])
df=df.rename(columns=df.iloc[0])
df= df.drop(df.index[[0]])
df=df.drop(['Sl.No'], axis = 1)
print(df)
【问题讨论】:
【参考方案1】:首先,阅读两张 Excel 表格。
>>> df1 = pd.read_excel('path/to/excel/file.xlsx', sheet_name="may2019")
>>> df2 = pd.read_excel('path/to/excel/file.xlsx', sheet_name="jun2019")
删除前三行。
>>> df1.drop(index=range(3), inplace=True)
>>> df2.drop(index=range(3), inplace=True)
将列重命名为第一行,并删除第一行
>>> df1.rename(columns=dict(zip(df1.columns, df1.iloc[0])), inplace=True)
>>> df1.drop(index=[0], inplace=True)
>>> df2.rename(columns=dict(zip(df2.columns, df2.iloc[0])), inplace=True)
>>> df2.drop(index=[0], inplace=True)
为列添加后缀。
>>> df1.rename(columns=lambda col_name: col_name + '_may2019', inplace=True)
>>> df2.rename(columns=lambda col_name: col_name + '_jun2019', inplace=True)
删除第二个 DF 中的重复名称列。
>>> df2.drop(columns=['Name'], inplace=True)
连接两个数据框
>>> df = pd.concat([df1, df2], axis=1, inplace=True)
所有代码都集中在一个地方:
import pandas as pd
df1 = pd.read_excel('path/to/excel/file.xlsx', sheet_name="may2019")
df2 = pd.read_excel('path/to/excel/file.xlsx', sheet_name="jun2019")
df1.drop(index=range(3), inplace=True)
df2.drop(index=range(3), inplace=True)
df1.rename(columns=dict(zip(df1.columns, df1.iloc[0])), inplace=True)
df1.drop(index=[0], inplace=True)
df2.rename(columns=dict(zip(df2.columns, df2.iloc[0])), inplace=True)
df2.drop(index=[0], inplace=True)
df1.rename(columns=lambda col_name: col_name + '_may2019', inplace=True)
df2.rename(columns=lambda col_name: col_name + '_jun2019', inplace=True)
df2.drop(columns=['Name'], inplace=True)
df = pd.concat([df2, df1], axis=1, inplace=True)
print(df)
【讨论】:
当然。如果有帮助,请接受并投票。以上是关于EXCEL 我想用日期命名自动建立多个工作表的主要内容,如果未能解决你的问题,请参考以下文章