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 5,714 回, dailycount 13回 , overallcount 16,630,877 回)
Recommended