【便利エクセル】隣のセルに自動入力するマクロの作り方をご紹介

 

A1セルにテキストを入力したらB1セルにテキストが自動入力される

こんなマクロを設定したい!

 

こんな要望にお応えします。

 

 

エクセルVBAを使えば、簡単に隣のセルにテキストを自動入力することが可能です。

 

Left Caption

正解の人

難しい関数を設定する必要はありません!

 

「隣のセルに自動入力するマクロ」を設定すると以下のようなメリットを得ることができます。

  • テキスト入力作業のスピードアップ
  • 入力ミスを減らせる
  • 別のマクロと組み合わせ可能

 

この記事で紹介している「隣のセルに自動入力するマクロの作り方」を参考にすると、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未経験の方がマクロを導入する2つの方法をご紹介します。

 

効率化マクロの開発依頼をする

どんな業務を行っていて、マクロを使ってどんな処理を自動化したいのか

上記のような内容を開発者に伝えるだけで効率化マクロを導入することができます。

 

マクロの開発依頼は、「費用が発生してしまう」「打合せがめんどう」といったデメリットはありますが業務内容に合った効率化マクロを確実に導入することができるので、

エクセル業務の効率をアップさせたい!エクセル業務のウェイトが大きく仕事が忙しい!という方におすすめです。

 

当ブログでもエクセルマクロの開発依頼を受注しています。

 

>>>マメBlogのエクセルマクロ開発依頼はこちら

 

マメBlogのエクセルマクロ開発の特徴

  • 安価
  • スピード納入
  • 業務内容に合わせた柔軟なマクロ開発

 

依頼者様が納得のいくマクロに仕上がるまで何度でもコードの改修を繰り返します。

 

Left Caption

ガッツポーズの人

多い時には50回近くコードの改修を実施したことも。。

まずは、そんなマクロの導入を検討しているのか!どんな作業で困っているのか!をご相談ください。

 

 

 

効率化マクロが設定されたエクセルファイルをダウンロードする

マクロが設定されたエクセルファイルをダウンロードすれば、VBAの知識がなくても効率化マクロを利用することができます。

ただし、想定している処理を行うマクロが設定されたエクセルファイルを見つけることはかなり難しいのかなと思います。

エクセルマクロに関するサイトをいろいろ調べてみたのですが、マクロが設定されたエクセルファイルをダウンロードできるサイトはかなり少ないのが現状です。

ほとんどのサイトが、VBAの解説までとなっています。

 

下記のサイトでは、マメBlogで受注開発したマクロが設定されたエクセルファイルのダウンロードが可能です。
 

 

サイトでは以下のようなマクロをダウンロードしてすぐにお使い頂くことができます。

  • 写真を自動的に貼り付けるマクロ
  • 書類を連続印刷するマクロ
  • 複数のエクセルファイルをまとめて操作するマクロ

「こんなマクロがほしい」といった要望から開発したマクロを数多く公開しているので是非参考にしてみてください。

 

 

よく、「マクロの内容を把握していなければ導入してはいけない!」と言う方がいらっしゃいますが、間違いであると私は思います

 

確かにコードの内容を把握することは大切ですがコードの全てを把握する必要はありません。

マクロが行う処理の概要さえ理解しておけば問題ありません。

 

使っていて業務内容に合わなくなってきたら、使用をやめる!もしくはコードの改修依頼をすればいいのです。

マクロを使うのと使わないのでは作業効率に大きな差が出ます。

 

 

「隣のセルに自動入力するマクロ」を仕事に導入するとエクセル業務の効率をかなりアップさせることができました。

自動入力による「書類作成スピードのアップ」に加えて、「入力ミスが激減した」というメリットが効率アップの大きな要因です。

 

エクセル業務の効率をアップさせたい!エクセル業務のウェイトが大きい!という方は是非「隣のセルに自動入力するマクロ」の導入を検討してみてください。

積極的にマクロを導入してエクセル業務の効率をアップさせましょう。