作者: kusunoki
日時: 2003/10/21(10:02)
こんにちは

> Excel などのアルファベットから成る列番号を数値に変換する処理です。
> Python と Perl で書かれています。

これは、 26進数を数字にするということでしょうか。
ただし 数字は使わず、アルファベットのみですが。

ためしにこんな感じで書いてみました、ちょっと力わざかもしれません。

 >cat data 
a
aa
ef
 
>cat rowtonum.awk 
$1 ~/[a-zA-z]+/ {
	rowIs = $1
	numIs = rowTonum(rowIs)
	print toupper(rowIs) " = " numIs
}


function rowTonum(row) {

        row = toupper(row)
        keta = length(row)


        excel["A"] = 1
        excel["B"] = 2
        excel["C"] = 3 
        excel["D"] = 4
        excel["E"] = 5
        excel["F"] = 6
        excel["G"] = 7
        excel["H"] = 8
        excel["I"] = 9
        excel["J"] = 10
        excel["K"] = 11
        excel["L"] = 12
        excel["M"] = 13
        excel["N"] = 14
        excel["O"] = 15
        excel["P"] = 16
        excel["Q"] = 17
        excel["R"] = 18
        excel["S"] = 19
        excel["T"] = 20
        excel["U"] = 21
        excel["V"] = 22
        excel["W"] = 23
        excel["X"] = 24
        excel["Y"] = 25
        excel["Z"] = 26

        dec = 0
        for (i = 0; i < keta ; i++) {
                dec = dec + excel[substr(row, keta - i, 1)]*26^i

        }

        return dec
}

>awk -f rowtonum.awk data
A = 1
AA = 27
EF = 136

---------------- 
くすのき@まっとう