2018/02/23
2020/05/04
Excelの列名と列番号を互換する関数
Excelでは列名が整数ではなく、アルファベットで表示され、指定した列が何番目の列かが分かりづらくなっています。1列目はA列で26列目はZ列。27列目からAA列、28列目がAB列というような感じです。今回は、Excelの列番号(整数)を入れれば、Excelの列名(アルファベット列名)に変更する関数と、逆にExcelの列名を入れれば、Excelの列番号に変更する関数を作ったので是非ご活用ください。
また、R言語についてさらに深く学んでいきたい方は、R言語入門をご覧ください!
目次
関数
(列番号)⇒(列名)に変換する関数
NumToLet <- function(i){
q <- floor(i/26) #商
r <- i%%26 #余り
if(r==0){
q <- q - 1
r <- 26
}
ret <- ifelse(q==0,"",NumToLet(q)) #アルファベットが一巡した時の処理
return(paste(ret,LETTERS[r],sep="")) #再帰的に呼び出す
}
以上の関数「NumToLet」に列番号(整数)を引数として渡すと、列名(アルファベット)を返してくれます。
(列名)⇒(列番号)に変換する関数
LetToNum <- function(l){
str <- rev(strsplit(l,"")[[1]]) #文字列を一文字ずつに分解
sum <- 0
for(i in 1:length(str)){ #26(アルファベットの数)進数を10進数に変換する
r <- 26^(i-1)
idx <- which(LETTERS==str[i]) #LETTERSベクトルとwhichを使い、アルファベットの番号を参照する
sum <- sum + idx*r
}
return(sum)
}
以上の関数「LetToNum」に列名(アルファベット)を引数として渡すと、列番号(整数)を返してくれます。
使用例
(列番号)⇒(列名)に変換する関数の使用例
> NumToLet(26) [1] "Z" > NumToLet(27) [1] "AA" > NumToLet(28) [1] "AB" > NumToLet(100) [1] "CV"
(列名)⇒(列番号)に変換する関数の使用例
> LetToNum("Z")
[1] 26
> LetToNum("AA")
[1] 27
> LetToNum("AB")
[1] 28
> LetToNum("CV")
[1] 100
参照しづらいExcelの列名、列番号も、これで簡単に得ることができます。
R言語について、さらに学びたい方はR言語入門をご覧ください。
(totalcount 6,293 回, dailycount 7回 , overallcount 16,865,449 回)








Recommended