EXCEL 我想用日期命名自动建立多个工作表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL 我想用日期命名自动建立多个工作表相关的知识,希望对你有一定的参考价值。

我想做多个工作表,按照日期命名,内容一样的,自动建立,请问应该怎么做?

    首先建一个工作表,里面填写需要创建的工作表的所有名字

    生成数据透视表。单击数据区域任意单元格,【插入】【数据透视表】,在【创建数据透视表】对话框中选择放置数据透视表的位置:现有工作表C1单元格。

    在弹出的【数据透视表字段列表】对话框中,将“生成以下名称的工作表”字段拖动到报表筛选区域,关闭【数据透视表字段列表】

    生成报表筛选页。单击C1单元格,依次单击【选项】选项卡,【数据透视表】命令组,单击【选项】右侧的三角按钮,在下拉列表中单击【显示报表筛选页】,弹出【显示报表筛选页】对话框。

    保留默认设置,单击确定。

    清除工作表内容。好多的工作表瞬间就生成了,但是新生成的工作表里都有一个数据透视表,需要把它清除掉。右键单击工作表标签,在下拉列表中选择【选定全部工作表】。

    单击工作表左上角的“全选按钮”,再依次单击【开始】选项卡,【编辑】命令组,【清除】按钮右侧的小三角,在下拉列表中选择【全部清除】。


    最后,右键单击工作表标签,【取消组合工作表】,完成。

参考技术A 用vba编写一个过程

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 我想用日期命名自动建立多个工作表的主要内容,如果未能解决你的问题,请参考以下文章

我想用EXCEL做一个仓库进销存的表格?

Excel 根据名称查找工作表

用vba新建工作表,并命名

如何用英文给excel表命名

如何在excel 用VBA插入多个工作表并命名。要用到宏。给分给分~

vb6.0改Excel的工作表名