stata: sheet 保存时名称不存在

stata: sheet name not exist when saving

我正在编写一个访问 excel 文件中多个 sheet 的 stata 程序,在对它们进行操作后,我尝试保存结果,但它显示 sheet 名称不存在(Cabo 未找到,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 以便在追加后保存数据。您还可以通过在循环之前保存一个空数据集来简化代码。然后每个 sheet 都将附加到此数据集,您不必将第一个 sheet 与以下 sheet 区别对待。

*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 

我同意这是我在不编写循环的情况下所能达到的最大程度,但代码清晰、透明并且可能会减少您编写的时间。