複数のセルの値を別の複数のセルにまとめて転記する

VBAセルの操作 VBA
VBAセルの操作

スポンサーリンク


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

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

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

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

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

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


スポンサーリンク

セルA1の値はセルA101へ…セルA50の値はセルA150へ

ユーザーフォームに配置しているコマンドボタン(CommandButton)を、複数のセルの値を別の複数のセルにまとめて転記する為だけに設置することは実際ないのですが、分かりやすくするために単独使用として書いてみました。

セルの値を別のセルに数個だけの場合は、ひとつひとつコードを記述すればいいけど、たくさんあったらコードを書き続けるのはとても面倒ですし、間違えの原因になりますよね。

例えば、セルA1、A2、A3に記載された文字や数字を別のセル、例えば、A101、A102、A103にコマンドボタンを押すと転記するコードを書いてみます。

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

転記実行ボタンは、CommandButton1。

Private Sub CommandButton1_Click()
Worksheets(“sheet1”).Range(“A101”).Value = Worksheets(“sheet1”).Range(“A1”).Value
Worksheets(“sheet1”).Range(“A102”).Value = Worksheets(“sheet1”).Range(“A2”).Value
Worksheets(“sheet1”).Range(“A103”).Value = Worksheets(“sheet1”).Range(“A3”).Value
End Sub

これで、セルA101の値はセルA1の値が、セルA102の値はセルA2の値が、セルA103の値はセルA3の値が、それぞれ転記されます。

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

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

For~Next

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

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

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

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

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

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

Private Sub CommandButton1_Click()
Dim i As Long
For i = 101 To 150
Cells(i, “A”).Value = Cells(i -100, “A”).Value
Next i
End Sub
  1. コマンドボタン1を押したら
  2. 数字が変わる部分を変数「i」を宣言
  3. 変わる数字が101~150
  4. セル(「変数i」、A列)の値は変数「i」-100で1行目~50行目のA列の値とする
  5. この作業を繰り返す
  6. マクロ終了

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

これでセルA101の値はセルA1から取得して記入し、順番にセルA150の値はセルA50まで繰り返し処理して転記してくれます。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

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

タイトルとURLをコピーしました