2018/02/23

2020/05/04

Excelの列名と列番号を互換する関数

R言語入門

ライター:

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 回)

ライター:

R言語入門

single-banner

COMMENT

コメントを残す

メールアドレスが公開されることはありません。
*は必須項目です。




CAPTCHA