楼主: 木牛流马0
4546 11

[数据管理求助] 合并一个文件夹中的多个excel [推广有奖]

  • 2关注
  • 0粉丝

讲师

20%

还不是VIP/贵宾

-

威望
0
论坛币
2680 个
通用积分
140.0773
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2616 点
帖子
128
精华
0
在线时间
716 小时
注册时间
2016-7-17
最后登录
2025-11-17

楼主
木牛流马0 学生认证  发表于 2021-6-25 21:15:53 |AI写论文
50论坛币
在一个文件夹中有多个excel文件,分别命名为“导出1”、“导出2”、“导出3”......“导出n”,每个excel都具有一样的变量名。如图,每个excel表格中第一、二行都需要删除,第三行都是变量名,下面的行是不同公司的信息。我需要删除每个表格中的第一二三行,在最上面保留一行变量名,然后对所有表格按文件名依次进行纵向合并。

1624626148(1).jpg (15.74 KB)

1624626148(1).jpg

最佳答案

黃河泉 查看完整内容

我想应该可以用 (ssc install) xls2dta,将所有档案叫进 Stata,然后再一起删除你所谓的前两行。
关键词:EXCEL xcel exce cel 文件夹
努力做一个不断向上的科研人

沙发
黃河泉 在职认证  发表于 2021-6-25 21:15:54
我想应该可以用 (ssc install) xls2dta,将所有档案叫进 Stata,然后再一起删除你所谓的前两行。

藤椅
wdlbcj 学生认证  发表于 2021-6-25 22:28:38
cd "C:\Users\chen\Desktop\新建文件夹"   你的路径
ssc install nrow

forvalues i=1/n{
import excel 导出`i'.xlsx, sheet("Sheet1")
drop in 1/2
nrow
save 导出`i'.dta,replace
clear
}

use 导出1.dta,replace
forvalues i=2/n{
append using 导出`i'.dta

save zonghe.dta,replace
use zonghe.dta,replace
}
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
木牛流马0 + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

板凳
木牛流马0 学生认证  发表于 2021-6-26 18:01:27
wdlbcj 发表于 2021-6-25 22:28
cd "C:\Users\chen\Desktop\新建文件夹"   你的路径
ssc install nrow
. 你好,在执行你的命令时出现这样的错误,能再帮忙看看嘛?
forvalues i == 1/n {
  2.  import excel 导出`i'.xlsx, sheet("Sheet1")
  3.  drop in 1/2
  4.  nrow
  5.  save 导出`i'.dta,replace
  6.  clear
  7.  }
invalid syntax
r(198);

end of do-file

r(198);

报纸
wdlbcj 学生认证  发表于 2021-6-26 18:55:26
木牛流马0 发表于 2021-6-26 18:01
. 你好,在执行你的命令时出现这样的错误,能再帮忙看看嘛?
forvalues i == 1/n {
  2.  import excel ...
第一行 你多写了一个等号

地板
木牛流马0 学生认证  发表于 2021-6-26 18:57:05 来自手机
哦哦,这个等号是出现了这样的问题后,我瞎改的,你原有的命令输入也会出现一样的错误

7
木牛流马0 学生认证  发表于 2021-6-27 20:37:34
黃河泉 发表于 2021-6-26 19:37
我想应该可以用 (ssc install) xls2dta,将所有档案叫进 Stata,然后再一起删除你所谓的前两行。
感谢黄老师,命令很简单可以实现。具体大家可以参看https://bbs.pinggu.org/thread-3785223-1-1.htmlhttps://stata-club.github.io/%E6%8E%A8%E6%96%87/20170209/

8
wdlbcj 学生认证  发表于 2021-6-27 21:00:30
木牛流马0 发表于 2021-6-26 18:57
哦哦,这个等号是出现了这样的问题后,我瞎改的,你原有的命令输入也会出现一样的错误
你好 这个命令我自己检验过应该是可以的,你可以发一下你的错误汇报截图 我看一下问题在哪里。

可以使用  回复   不然我不能及时看到消息

9
jxapp_4166 发表于 2021-6-28 10:40:38
**如何把excel数据批量转为stata数据
  1. cap prog drop sblexcel
  2. prog define sblexcel
  3.         version 14
  4.         syntax [anything] [, FIRSTROW REPLACE]

  5. qui{
  6.     local a=1
  7.     local e=1
  8.     local files: dir "." file "*.xlsx", respectcase
  9.     foreach file in `files' {
  10.         cap import excel using "`file'", describe
  11.                 if _rc!=0{
  12.                     local e`e'="`file'"
  13.                     local e=`e'+1
  14.                     continue           
  15.                 }  
  16.         forvalues i = 1/`r(N_worksheet)' {
  17.            
  18.            import excel using "`file'", describe
  19.             cap import excel using "`file'" ,   ///
  20.             sheet(`r(worksheet_`i')')       ///
  21.             cellrange(`r(range_`i')')      ///   
  22.             `firstrow'  clear
  23.             
  24.             import excel using "`file'", describe
  25.             local name=subinstr("`file'--`r(worksheet_`i')'",".xlsx","",.)                 
  26.             if `r(N_worksheet)'==1 | "`r(range_2)'"==""{
  27.                 local name=subinstr("`file'",".xlsx","",.)
  28.             }            
  29.             save "`name'.dta",`replace'               
  30.             
  31.             local j=`i'+1
  32.             if "`r(range_`j')'"==""{
  33.                 continue, break
  34.             }        
  35.         }  
  36.         n dis "." _c     
  37.         local a=`a'+1   
  38.     }
  39.    
  40.     local files: dir "." file "*.xls", respectcase
  41.     foreach file in `files' {
  42.         cap import excel using "`file'", describe
  43.                 if _rc!=0{
  44.                     local e`e'="`file'"
  45.                     local e=`e'+1
  46.                     *erase "`file'"
  47.                     continue           
  48.                 }  
  49.         forvalues i = 1/`r(N_worksheet)' {
  50.             
  51.             import excel using "`file'", describe  
  52.             cap import excel using "`file'" ,   ///
  53.             sheet(`r(worksheet_`i')')       ///
  54.             cellrange(`r(range_`i')')      ///   
  55.             `firstrow'  clear

  56.             import excel using "`file'", describe
  57.             local name=subinstr("`file'--`r(worksheet_`i')'",".xls","",.)      
  58.             if `r(N_worksheet)'==1 | "`r(range_2)'"==""{
  59.                 local name=subinstr("`file'",".xls","",.)
  60.             }
  61.             save "`name'.dta",`replace'

  62.             local j=`i'+1
  63.             if "`r(range_`j')'"==""{
  64.                 continue, break
  65.             }        
  66.         }  
  67.         n dis "." _c     
  68.         local a=`a'+1
  69.     }

  70.     if `e'!=1{
  71.         n dis "" _n
  72.         n dis as err "The following `e' sets of data could not be loaded into STATA"
  73.         forvalues i =1/`e'{
  74.             n dis as err "`e`i''"
  75.         }
  76.     }
  77. }
  78. end
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
木牛流马0 + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

10
木牛流马0 学生认证  发表于 2021-7-2 08:55:40
wdlbcj 发表于 2021-6-27 21:00
你好 这个命令我自己检验过应该是可以的,你可以发一下你的错误汇报截图 我看一下问题在哪里。

可以使 ...
您好,问题已解决,可以用xls2dta命令将excel转换成stata格式然后合并,最后删除不需要的即可,感谢您的回复

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-9 05:34