忍者ブログ
ブログ主が仕事や個人的に学んだPC系・プログラミング系(VBAとかHTML)について書いていく備忘録ブログ。 ※ここで記載する内容はあくまで「個人的に」上手くいく内容です。ご使用には十分注意してください
[8] [7] [6] [5] [4] [3] [1
Posted by 若槻風亜 - 2013.07.04,Thu
(対象)Excel VBA
(確認)Excel2003



今回は列番号から列名を取得するファンクションと
列名から列番号を取得するファンクションです。

列名から~はあんまり使いませんが、列番号から
列名を取得する方のファンクションは結構使えると
思います。



'==============================================
' 列番号を列名に変換
'==============================================
Function RetuHenkan(ByVal K As Integer) As String
  Dim RetuMei As Variant
  Dim RetuA   As Integer
  Dim RetuB   As Integer
  RetuMei = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", _
                  "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
  If K > 26 Then
    RetuA = Int(K / 26)
    RetuB = K Mod 26
    If RetuB = 0 Then
      RetuA = RetuA - 1
      RetuB = 26
    End If
    RetuHenkan = RetuMei(RetuA - 1) & RetuMei(RetuB - 1)
  Else
    RetuHenkan = RetuMei(K - 1)
  End If
End Function
――――――――――――――――――――――――――――――――

(使い方例)
Dim Retu as String
Dim i        as Integer
For i = 1 to 20
  Retu = RetuHenkan(i)
  ActiveSheet.Range(Retu & "2").Value = "In!"
Next

(説明)
Iを1から20まで回し、Iの値が何列かを求める。
例だとA列からT列までが対象になる。
AA列以降も使えるようにはなっている(はず)



'==============================================
' 列名を列番号に変換
'==============================================
Function RetuMeiHenkan(ByVal Retu As String) As Integer
  Dim RetuMei As Variant
  Dim RetuA   As Integer, RetuB   As Integer
  Dim RetuC   As String, RetuD    As String
  RetuMei = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", _
                  "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
  
  
  RetuC = Join(RetuMei, "")
  If Len(Retu) > 1 Then
    '1文字目
    RetuD = Left(Retu, 1)
    RetuA = InStr(RetuC, RetuD)
    
    '2文字目
    RetuD = Right(Retu, 1)
    RetuB = InStr(RetuC, RetuD)
    
    RetuMeiHenkan = (RetuA * 26) + RetuB
  Else
    RetuA = InStr(RetuC, Retu)
    RetuMeiHenkan = RetuA
  End If
End Function
――――――――――――――――――――――――――――――――

(使い方例)
Dim i as Integer
Dim j as Integer
Dim k as Integer
i = RetuMeiHenkan("A")
j = RetuMeiHenkan("T")
For k = i to j
  ActiveSheet.Cells(2 , k).Value = "In!"
Next

(説明)
AとTを指定して各列の列番号を取得。
その分だけFor文を回して処理が行える。
AA列以降も可能な(はず)



拍手[0回]

PR
Comments
Post a Comment
Name :
Title :
E-mail :
URL :
Comments :
Pass :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:
若槻風亜
性別:
女性
職業:
会社員
趣味:
創作、プログラミング
自己紹介:
仕事や個人で学んだことをまとめておきたかったがために備忘録ブログを立ち上げました。
あくまで自分が学んだこと・自分が出来たことなので、ご覧くださる場合は参照レベルでお願いします。
ブログ内検索
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
P R
最新トラックバック
コガネモチ
フリーエリア



Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]