我正在编写一个访问excel文件中的多个工作表的stata程序,在我对它们进行操作后,我试图保存结果,但它显示工作表名称不存在(Cabo not found, r(111)(我的代码是这样的:
clear
foreach sheet in "Cabo" "Ga" "Inha" {
import excel using "filename.xlsx", sheet("`sheet'") firstrow
//here are operations//
if `sheet' == "Cabo" {
save test1018
}
else {
append using test1018.dta
save test1018
}
}
有谁知道我做错了什么吗?谢谢你! !您还需要包含, replace
,以便在追加之后保存数据。您还可以通过在循环之前保存一个空数据集来简化代码。然后,每个工作表将被附加到此数据集,并且您不必将第一个工作表与以下工作表区别对待。
*Save an empty dataset to append to
clear
save test1018.dta, replace emptyok
foreach sheet in "Cabo" "Ga" "Inha" {
import excel using "filename.xlsx", sheet("`sheet'") firstrow
//here are operations//
append using test1018.dta
save test1018.dta, replace
}
@TheIceBear在这里指出了很好的技巧。
这个答案的要点是,对于三张纸,循环不是必需的。这应该也可以工作,但要考虑到我们无法检查的文件的详细信息。
import excel using "filename.xlsx", sheet("Cabo") firstrow clear
save test1018
import excel using "filename.xlsx", sheet("Ga") firstrow clear
append using test1018
save test1018, replace
import excel using "filename.xlsx", sheet("Inha") firstrow clear
append using test1018
save test1018, replace
我同意这是我在不写循环的情况下所能做到的,但是代码是清晰、透明的,并且可能会花费你更少的时间来编写。