Skip to content

Instantly share code, notes, and snippets.

@naokits
Created November 29, 2014 12:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save naokits/13cfeed25ccbfa14a933 to your computer and use it in GitHub Desktop.
Save naokits/13cfeed25ccbfa14a933 to your computer and use it in GitHub Desktop.
エクセルのカラムを、数字 -> アルファベット、 アルファベット -> 数字 に変換するユーティリティ
#!/usr/bin/env xcrun swift
//
// エクセルのカラムを、数字 -> アルファベット、 アルファベット -> 数字 に変換するユーティリティ
//
// Created by Naoki Tsutsui on 2014/11/29.
// Copyright (c) 2014 Naoki Tsutsui All rights reserved.
//
import Foundation
let alphabet: NSString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
/// エクセルのカラム名 "AAなど" を数値に変換して返す
/// A-Zの26進法として処理する
/// セル A~ZZまでに対応
func getColumnNumber(column: NSString) -> Int {
var result: Int
if (column.length == 1) {
result = (alphabet.rangeOfString(column).location + 1)
} else {
let range1 = NSMakeRange(0, 1)
let range2 = NSMakeRange(1, 1)
let substring1 = column.substringWithRange(range1)
let substring2 = column.substringWithRange(range2)
result = (alphabet.rangeOfString(substring1).location + 1) * 26 + (alphabet.rangeOfString(substring2).location + 1)
}
return result
}
/// エクセルのカラム数をカラム名に変換して返す
/// A-Zの26進法として処理する
/// セル A~ZZまでに対応
func getColumnName(column: Int) -> String {
var aa = column / 26
var bb = column % 26
var range: NSRange!
if (column <= 26) {
range = NSMakeRange(column-1, 1)
return alphabet.substringWithRange(range)
} else {
range = NSMakeRange(aa-1, 1)
let substring1 = alphabet.substringWithRange(range)
range = NSMakeRange(bb-1, 1)
let substring2 = alphabet.substringWithRange(range)
return substring1 + substring2
}
}
println(getColumnNumber("ZZ"))
println(getColumnName(170))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment