【便利エクセル】隣のセルに自動入力するマクロの作り方をご紹介
A1セルにテキストを入力したらB1セルにテキストが自動入力される
こんなマクロを設定したい!
こんな要望にお応えします。
エクセルVBAを使えば、簡単に隣のセルにテキストを自動入力することが可能です。

正解の人
「隣のセルに自動入力するマクロ」を設定すると以下のようなメリットを得ることができます。
- テキスト入力作業のスピードアップ
- 入力ミスを減らせる
- 別のマクロと組み合わせ可能
この記事で紹介している「隣のセルに自動入力するマクロの作り方」を参考にすると、VBA未経験の方でも簡単にマクロを設定することができるはずです。
手入力作業の効率をアップさせたい!と考えている方は是非参考にしてみてください。
目次
隣のセルに自動入力するマクロとは
隣のセルに自動入力するマクロとは、
A列のセルにテキストを入力した場合、B列のセルに対応するテキストが自動で入力される
プログラムです。
例えば、
A1セルにテキストを入力したときB1セルに「テスト」というテキストが入力される
という処理を行うことができます。
設定するVBAのコードがこちら
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(Cells(1, 1), Cells(1, 1))) Is Nothing Then
Exit Sub
Else
Cells(1, 2) = "テスト"
End If
End Sub
たった7行のコードで「隣のセルに自動入力するマクロ」を設定することができます。
- 氏名を入力すると連絡先が自動入力される
- 会社名を入力すると住所が自動入力される
- 苗字を入力すると名前が自動入力される
こんなエクセル業務の効率をアップさせることが可能です。
実用性の高いサンプル事例をもとに隣のセルに自動入力するマクロの処理について詳しく解説していきます。
【サンプル事例】 別シート情報を取得し隣のセルに自動入力するマクロ
サンプル事例では、
D列に会社名、E列に氏名を入力。別シートの一覧表にある個人情報と一致した場合、隣のセルに自動入力するマクロ
を作成しました。
マクロの処理はこんな感じ
「会社名」と「氏名」を入力するだけで、「プルダウン一覧」シートの情報を自動入力してくれます。
さらに、「会社名」と「氏名」の入力方法は手入力ではなくプルダウンリストから選択して入力できるようマクロが設定されています。
なので、「プルダウン一覧」に記載されている情報が増減すると自動的に入力リスト項目も増減するという仕組みになっています。
エクセルVBAを使ってプルダウンリストを設定する方法については下記の記事を参考にしてみてください。
「隣のセルに自動入力するマクロ」の導入方法
「隣のセルに自動入力するマクロ」の導入方法を図を使って詳しく解説していきます。
1.様式設定
上図のように一覧表を設定してください。
- 「プルダウン一覧」シートに記入する一覧表
- 「データシート」シートに記入する一覧表
「データシート」シートの6列~8列が自動入力範囲となります。
2.VBA画面の編集
3.「データシート」にコードを入力
4-1.隣のセルに自動入力するマクロのサンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ash As Worksheet
Set Ash = Sheets("プルダウン一覧")
Dim Bsh As Worksheet
Set Bsh = Sheets("データシート")
gyo1 = Ash.Cells(Rows.Count, 2).End(xlUp).Row
gyo2 = Ash.Cells(Rows.Count, 3).End(xlUp).Row
gyo3 = Ash.Cells(Rows.Count, 4).End(xlUp).Row
gyo31 = Ash.Cells(Rows.Count, 5).End(xlUp).Row
gyo32 = Ash.Cells(Rows.Count, 6).End(xlUp).Row
gyo4 = Bsh.Cells(Rows.Count, 4).End(xlUp).Row + 10
gyo5 = Bsh.Cells(Rows.Count, 5).End(xlUp).Row + 10
gyo6 = Bsh.Cells(Rows.Count, 6).End(xlUp).Row + 10
gyo7 = Bsh.Cells(Rows.Count, 7).End(xlUp).Row + 10
gyo8 = Bsh.Cells(Rows.Count, 8).End(xlUp).Row + 10
If Intersect(Target, Range(Cells(3, 5), Cells(gyo5, 5))) Is Nothing Then
GoTo L1
Else
For i = 3 To gyo2
If (Bsh.Cells(Target.Row, Target.Column) = Ash.Cells(i, 3)) And (Bsh.Cells(Target.Row, Target.Column - 1) = Ash.Cells(i, 2)) Then
Bsh.Cells(Target.Row, Target.Column + 1) = Ash.Cells(i, 4)
Bsh.Cells(Target.Row, Target.Column + 2) = Ash.Cells(i, 5)
Bsh.Cells(Target.Row, Target.Column + 3) = Ash.Cells(i, 6)
GoTo L1
Else
Bsh.Cells(Target.Row, Target.Column + 1).ClearContents
Bsh.Cells(Target.Row, Target.Column + 2).ClearContents
Bsh.Cells(Target.Row, Target.Column + 3).ClearContents
End If
Next
End If
L1:
If Intersect(Target, Range(Cells(3, 4), Cells(gyo5, 4))) Is Nothing Then
Exit Sub
Else
For i = 3 To gyo2
If (Bsh.Cells(Target.Row, Target.Column) = Ash.Cells(i, 2)) And (Bsh.Cells(Target.Row, Target.Column + 1) = Ash.Cells(i, 3)) Then
Bsh.Cells(Target.Row, Target.Column + 2) = Ash.Cells(i, 4)
Bsh.Cells(Target.Row, Target.Column + 3) = Ash.Cells(i, 5)
Bsh.Cells(Target.Row, Target.Column + 4) = Ash.Cells(i, 6)
GoTo L2
Else
Bsh.Cells(Target.Row, Target.Column + 2).ClearContents
Bsh.Cells(Target.Row, Target.Column + 3).ClearContents
Bsh.Cells(Target.Row, Target.Column + 4).ClearContents
End If
Next
End If
L2:
End Sub
4-2.別シートの一覧表情報をプルダウンリストで表示するマクロ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ash As Worksheet
Set Ash = Sheets("プルダウン一覧")
Dim Bsh As Worksheet
Set Bsh = Sheets("データシート")
gyo1 = Ash.Cells(Rows.Count, 2).End(xlUp).Row
gyo2 = Ash.Cells(Rows.Count, 3).End(xlUp).Row
gyo3 = Ash.Cells(Rows.Count, 4).End(xlUp).Row
gyo31 = Ash.Cells(Rows.Count, 5).End(xlUp).Row
gyo32 = Ash.Cells(Rows.Count, 6).End(xlUp).Row
gyo4 = Bsh.Cells(Rows.Count, 4).End(xlUp).Row + 10
gyo5 = Bsh.Cells(Rows.Count, 5).End(xlUp).Row + 10
gyo6 = Bsh.Cells(Rows.Count, 6).End(xlUp).Row + 10
gyo7 = Bsh.Cells(Rows.Count, 7).End(xlUp).Row + 10
gyo8 = Bsh.Cells(Rows.Count, 8).End(xlUp).Row + 10
Bsh.Range(Bsh.Cells(2, 4), Bsh.Cells(gyo4, 4)).Validation.Delete
If Target.Column = 4 Then
risuto1 = WorksheetFunction.Transpose(Ash.Range(Ash.Cells(3, 2), Ash.Cells(gyo1, 2)))
With Target.Validation
.Add Type:=xlValidateList, Formula1:=Join(risuto1, ",")
.ShowError = False
End With
Else
End If
Bsh.Range(Bsh.Cells(3, 5), Bsh.Cells(gyo5, 5)).Validation.Delete
If Target.Column = 5 Then
risuto2 = WorksheetFunction.Transpose(Ash.Range(Ash.Cells(3, 3), Ash.Cells(gyo2, 3)))
With Target.Validation
.Add Type:=xlValidateList, Formula1:=Join(risuto2, ",")
.ShowError = False
End With
For i = 3 To gyo2
If (Bsh.Cells(Target.Row, Target.Column) = Ash.Cells(i, 3)) And (Bsh.Cells(Target.Row, Target.Column - 1) = Ash.Cells(i, 2)) Then
Bsh.Cells(Target.Row, Target.Column + 1) = Ash.Cells(i, 4)
Bsh.Cells(Target.Row, Target.Column + 2) = Ash.Cells(i, 5)
Bsh.Cells(Target.Row, Target.Column + 3) = Ash.Cells(i, 6)
Else
End If
Next
Else
End If
End Sub
サンプルコードをコピーして「データシート」に貼り付けてください。
隣のセルに自動入力するマクロの導入がこれで完了です。
データシートで「会社名」と「氏名」を入力すると「身長」「体重」「性格」の情報が自動入力されるはずです。お試しください。
上記のように、自分でコードを入力して隣のセルに自動入力するマクロを導入する以外に、
隣のセルに自動入力するマクロが設定されたエクセルファイルをダウンロードして導入する
という方法があります。
コードをコピペする!様式を設定する!などの手間は一切必要ありません。
エクセルファイルをダウンロードするだけで上記で紹介しているサンプルマクロを利用することができます。
>>> 隣のセルに自動入力するマクロのダウンロードはこちら
サンプルマクロには「隣のセルに自動入力するマクロ」以外に、
条件によってテキストを削除するマクロ、別シートの情報を取得するマクロなどが設定されていますので是非参考にしてみてください。
VBA初心者が効率化マクロを導入する方法
VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!
このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。
こんな問題を解決する方法がこちら
- マクロの開発を外注に依頼する
- マクロが設定されたエクセルファイルをダウンロードする
- 参考書やネットでVBAスキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
ディスカッション
コメント一覧
まだ、コメントがありません