複数のテキストボックスの値をセルに転記した後に値を結合する

エクセルVBAセルの操作

エクセル(Excel)を使っていて、表の中から一番左の値を検索してその値と同じ行にある値を探して見つけてくれるVLOOKUP関数。

顧客情報などで登録番号から名前を検索する時などで、とても便利なのでよく使いますが!

ところが・・・

使っている顧客情報から検索する時に2つの条件の組み合わせで探すことがあるのですが、困ったことが。

それは、「顧客区分」をA・B・C・D・Eの5つの区分で分けていて、次に顧客数に応じて連番を振って管理しています。

同じ100番でも、区分A100・B100・C100・D100・E100と5人いることになります。

この為ユーザーフォームで顧客検索をつくった時に、テキストボックスには顧客区分と番号の2つ入力すると、検索結果がラベルに表示するようにしたのですが、

私の今の知識レベルでは、「最大5人分を一度に2つの条件を満たした時に値を返す」がうまくいきませんでした。

そこで、検索機能はVLOOKUPエクセル関数で行うことにしますが、

値が「A」「100」の時に、検査値に同じ「A100」なのに直接数字で「A100」の時はエラーにならずにきちんと見つけてくれるのですが、数式により導き出された「A100」の時は、なぜかエラーになってしまいます。

なぜそうなるのかは分かりません。

数式での「A100」は文字列として扱われてしまうようで、数値の「A100」とは違うらしい事しかわからないので、VBAで結合転記すれば解消できました。
スポンサーリンク


目次

セルA1とB1の値を結合してセルC1へ…セルA100とB100の値を結合してセルC100へ

ユーザーフォームに配置しているコマンドボタン(CommandButton)を、2つのセルの値を結合して別のセルに記載するのが、数か所ならばひとつひとつコードを記述すればいいけど、たくさんあったらコードを書き続けるのはとても面倒ですし、間違えの原因になりますよね。

数式ならばC1には、=A1&B1 と記載すれば、簡単にできます。

この場合、A列には顧客コードABCDEで、B列には番号、C列に結合した値です。

ただしこれでは、数式によって表示されたC1の値は文字列になってしまうのでVLOOKUPは使えない。

例えば、セルA1、 B1、に記載された文字や数字を結合してセルC1に3行分コマンドボタンを押すと転記するコードを書いてみます。

記載されているシートは、Sheet1。

転記実行ボタンは、CommandButton1。

Private Sub CommandButton1_Click()
Worksheets(“sheet”).Range(“C1”).Value = Worksheets(“sheet”).Range(“A1”).Value & Worksheets(“sheet”).Range(“B1”).Value
End Sub

これで、セルC1の値「A100」はセルA1の値「A」とセルB1の値「100」が結合されて記載されます。

このように繰り返したとして3つぐらいなら、コードも短いですし、間違えることは無さそうなのですが、

これが、10個、20個、30個・・・となったら大変ですよね。

For~Next

そこで、エクセルVBAで多く使われているFor~Nextですが、「指定した回数だけ処理を繰り返す」というものです。

ユーザーフォームに配置したそれぞれのテキストボックスにそれぞれのセルに入力された値が、コマンドボタンで指定したテキストボックスに転記されます。

とても便利で簡単なので使わないなんて損ですよね。

実際には下記のようなコードを書いています。

Private Sub CommandButton2_Click()
Dim i As Long
For i = 1 To 100
Cells(i, “C”).Value = Cells(i, “A”).Value & Cells(i, “B”).Value
Next i
End Sub

これが基本的に繰り返しそれぞれのテキストボックス入力された値をセルにそれぞれ転記するコードになります。

  1. ユーザーフォームのコマンドボタン(CommandButton1)を押したら
  2. 数字が変わる部分を変数「i」として、変わる数字が1~100
  3. セル(「変数i」、C列)に記入
  4. 変数「i」で1行目~100行目のそれぞれのA列の値とB列の値を結合
  5. Valueで転記するという指示です。
  6. この作業を「i」に書いてある1~100まで繰り返して行う

これでセルC1の値はセルA1の値とB1の値を結合して、順番にセルC100の値はセルA100の値とB100の値を結合して繰り返し処理して転記してくれます。
スポンサーリンク

波乗りアヒル
波乗りアヒル

ご覧いただきありがとうございます。

ブログランキングに登録しています。

少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。


Microsoft Officeランキング

ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
あわせて読みたい
エクセルVBAで住所録入力フォームを作る方法 数百人規模の中規模の住所録や顧客データをエクセルで管理している事業所って意外と多いですが、データを検索して修正するのってすごく面倒じゃないですか? 面倒だなあ...
あわせて読みたい
ユーザーフォームでオリジナル入力画面を作る エクセルのデータ入力・検索・修正作業ってとても面倒で時間と手間がかかりませんか? この作業を簡単に素早く終わらせたくないですか? エクセル使うなら今話題の時短...
とりっぷぼうる
エクセル関数とVBAで和暦西暦対応カレンダー作成 | とりっぷぼうる エクセル関数を基本として作成し、ユーザーフォームで日付選択ができるようにすることで複雑なマクロが分からなくても、自由にカスタマイズして自分のエクセルに組み込んで...
あわせて読みたい
Excel-VBAもくじ~エクセルの作業時間を半減させる方法 【コピペOK】このExcel-VBAページに掲載している内容・VBAコードが、少しでもお役に立てるのであればコピーして使っていただいて構いません。 たった1秒で完了!驚異の...
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

目次