こんにちは、さすを(@sasuwo0409)です。
いきなりですが、
Excelの別シートからランダムでデータを抽出して表示させたい!
と思ってはいませんか?
今回の記事は、vbaを使ってExcelの別シートからランダムでデータを抽出して表示する方法を解説していきます。
それでは本文をどうぞ。

Excelの別シートからランダムでデータを抽出して表示させたいんだけどどうすればいいのかわからない、、
同じシートからランダム抽出する方法について書いてある記事は見つけたんだけど、、

この悩みを解決します!
※0円のサンプルテキストという近道
独学よりプログラミングスクールの方が効果は出やすいですが、値段が高く、なかなか手を出しづらいですよね。techgymでは無料のサンプルテキストをもらえるので、これを使ってPythonの基礎を学ぶのもありだと思います。
1.【Excel】vbaで別シートからランダム抽出する方法

Excelのvbaを使って別シートからランダム抽出するための手順は以下の5つです。
- 拡張子を「.xlsm」として保存する
- データを作成する
- 表示させるシートを作成する
- 開発タブを表示させる
- vbaで処理を書く
1-1.拡張子を「.xlsm」として保存する
vbaは、エクセルのファイル拡張子が「.xlsm」でないと使うことができません。
ですので、ファイル保存時に「.xlsm」として保存する必要があります。

1-2.データを作成する
拡張子が「.xlsm」のファイルを作ったら、データを作成していきましょう。
Excelを開いて、新規のシートを作成し、データを追加します。
(シート名や書き込むセルの場所はどこでもOKですが、vbaにも影響ができるので適宜変更してください。)

ランダム列には「=RAND()」と入力してEnterキーを押せばOKです。

入力したランダム列を全てコピーするか、セルの右下部分をドラックアンドドロップして項目のあるすべてのセルに反映すればデータの入力は完了です。

1-3.表示させるシートを作成する
データを作成したら、ランダム抽出させるシートを作っていきましょう。
ランダム抽出を表示したいセルには「=抽出したいExcelシート名!セルの番号」を書けばOKです。
補足:
例)赤枠に別シートの情報を入れたい場合の手順。

1.別シートの名前(今回はマスタ)と、セルの場所を覚える。

2. 「=抽出したいExcelシート名!セルの番号」 に当てはめてデータを入力する。



項目名も同様に行えばOKです!
1-4.開発タブを表示させる
表示させたいデータを作成したら、開発タブをExcelに表示させていきましょう。

エクセルのタブに「開発」があればこの項目はスキップしてください!
開発タブの表示方法は以下の3ステップです。
- Excel上で「ファイル」→「オプション」→ 「リボンのユーザー設定」の順にクリックする。
- 左画面から「開発」をクリックし、「追加(A)>>」をクリックする。
- 画面右下の「OK」をクリックする。
これらの作業をすると、Excelのタブに開発タブが出現します。

これで、vbaで処理を書く環境が整いました。
1-5.vbaで処理を書く
「開発タブ」→「挿入」→「ボタン(フォーム コントロール」の順にクリックし、任意の場所にボタンを作成します。

ボタンを作成しようとすると、以下のような画面が出てくるので「新規作成」をクリックします。(マクロ名は好きなように設定してOKです。)

以下のソースコードをコピーして貼り付ければOKです。
Sub ボタン10_Click()
'
' 抽選のボタン Macro
'
'
Range("C2").Select
Calculate
ActiveWorkbook.Worksheets("マスタ").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("マスタ").Sort.SortFields.Add Key:=Range("D5"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("マスタ").Sort
.SetRange Range("B5:D25")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B5").Select
Sheets("ランダム抽出").Select
Range("A1").Select
End Sub

これで、vbaで別シートからランダム抽出できるようになりました。

なお、ボタンの名前を変えたい場合は、ボタンを右クリックし「テキストの編集(X)」をクリックすればOKです。
2.【Excel】vbaを使わずに別シートからランダム抽出もできる

ここまでvbaを使って別シートからランダム抽出する方法を紹介しましたが、慣れていないとなかなか難しいと思います。
他にvbaを使ってみようとしても、一から調べるのは大変ですよね。
そこでおすすめしたいのが「マクロの記録」です。
マクロの記録:
https://diamond.jp/articles/-/256894
「マクロの記録」ボタンを押してから「記録終了」ボタンを押すまでの、エクセルでの作業内容が自動的にマクロ化される仕組み
マクロの記録を使うことで、vbaを使わずに自動でExcelを操作することができるようになります。
自動でExcelを操作してみたい!
でも、vbaは難しくて手が付けられない…
という方はぜひ触ってみてください。

「マクロの記録」は、開発タブの中にあります!
最後に:自動化で作業効率を上げていこう
vbaを使ってExcelの別シートからランダムでデータを抽出して表示する方法を解説してきました。
身近なExcelで自動化ができるようになると、作業効率がかなり変わってきます。
偉そうなことを言ってしまいましたが、僕もまだまだvbaを使いこなせていないので、コツコツ学んでいきたいと思います。
この記事が少しでも役に立っていたらうれしいです!
それでは!
>>【無料】Twitterの「いいね」を自動でする方法【注意:使用はしないでください】
>>Pythonを使って複数枚の画像を自動でExcelに張り付ける方法を徹底解説!【図解あり】
コメント