Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » 左隣の列のフリガナを取得するエクセルマクロ

左隣の列のフリガナを取得するエクセルマクロ

対象:Excel2007, Excel2010, Excel2013

別のセルのふりがな・左隣のセルのふりがなを取得するさまざまなVBA(Visual Basic for Applications)のコードをご紹介しました。

実務では、何らかのシステムから出力されたCSVファイルにふりがなのデータがないので、何とかしてふりがなを入れたいという、という要望が上がったりします。

そんなときに使えそうなマクロをご紹介しておきます。

[スポンサードリンク]

左隣の列のフリガナを取得するサンプルマクロ

アクティブな列に、左隣の列に入力されているデータのふりがなを取得するマクロです。


Sub 左隣の列のフリガナを取得する()

 Dim col As Long  ''アクティブセルの列番号
 Dim row_a As Long  ''アクティブセルの行番号
 Dim row_z As Long  ''左の列の最終行番号
 Dim i As Long
 Dim msg As String

 With ActiveCell
  col = .Column
  If col = 1 Then Exit Sub
  row_a = .Row
  row_z = .Offset(0, -1).End(xlDown).Row
 End With

 msg = "アクティブセルから下のセルに、左隣のセルに入力されているデータのフリガナを入力しますか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

 For i = row_a To row_z
 With Cells(i, col)
  If .Value = "" Then
   .Value _
   = Application.GetPhonetic(Cells(i, col - 1).Value)
  End If
 End With
 Next i

End Sub

実行すると
「アクティブセルから下のセルに、左隣のセルに入力されているデータのフリガナを入力しますか?」
というメッセージが表示され、[はい]ボタンをクリックすると、アクティブなセルから下のセルに、左隣のセルに入力されているデータのふりがなが一気に入力されます。

サンプルマクロの解説

アクティブなセルの列番号を取得して、
 With ActiveCell
  col = .Column

もしA列(1列目)がアクティブだった場合には左の列がないのでマクロを終了します。
  If col = 1 Then Exit Sub

変数・row_aにアクティブセルの行番号を格納し、
  row_a = .Row

変数・row_zに、左隣の列の、データの入力されている最終行番号を格納します。
  row_z = .Offset(0, -1).End(xlDown).Row

ActiveCellの左隣のセルを、Offsetプロパティの第1引数に「0」第2引数に「-1」を指定することで取得して
 「ActiveCell.Offset(0, -1)」
その下方向の終端セルを、Endプロパティの引数に定数・xlDownを指定することで取得して
 「ActiveCell.Offset(0, -1).End(xlDown)」
取得できたRangeオブジェクトのRowプロパティで行番号を取得しています。
 「ActiveCell.Offset(0, -1).End(xlDown).Row」

このマクロを必要とするシーンを想像すると、途中に空白のセルが存在していることは少なそうなので、最終行を取得するのに「End(xlDown)」としました。

アクティブなセルの行から、左隣の列のデータの入力されている最終行までループを回して、
 For i = row_a To row_z

データが入力されていなかった場合に、
 With Cells(i, col)
  If .Value = "" Then

左隣のセルのフリガナを取得しています。
   .Value _
   = Application.GetPhonetic(Cells(i, col - 1).Value)

もちろん、このマクロで取得できたフリガナは、あくまでも推測し得る範囲のものですから、本当のフリガナと違っている可能性もあるいうことは、十分ご承知おきください。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » 左隣の列のフリガナを取得するエクセルマクロ

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » 左隣の列のフリガナを取得するエクセルマクロ

「Offsetプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.