プログラミング

【Excel】vbaで別シートからランダム抽出する方法【コピペOKです】

【Excel】vbaで別シートからランダム抽出する方法【コピペOKです】

こんにちは、さすを(@sasuwo0409)です。

いきなりですが、

Excelの別シートからランダムでデータを抽出して表示させたい!

と思ってはいませんか?

今回の記事は、vbaを使ってExcelの別シートからランダムでデータを抽出して表示する方法を解説していきます。

それでは本文をどうぞ。

困っている人
困っている人

Excelの別シートからランダムでデータを抽出して表示させたいんだけどどうすればいいのかわからない、、

同じシートからランダム抽出する方法について書いてある記事は見つけたんだけど、、

さすを
さすを

この悩みを解決します!

この記事を読むとわかること:

Excelの別シートからランダムでデータを抽出する方法

筆者の情報:

  • 現役システムエンジニア 兼 ブロガー
  • 過去に6,000万のPython案件を受注


※少しでも早くPythonスキルを身につけたい方は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。
エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。
本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

スポンサーリンク

1.【Excel】vbaで別シートからランダム抽出する方法

1.【Excel】vbaで別シートからランダム抽出する方法

Excelのvbaを使って別シートからランダム抽出するための手順は以下の5つです。

  1. 拡張子を「.xlsm」として保存する
  2. データを作成する
  3. 表示させるシートを作成する
  4. 開発タブを表示させる
  5. vbaで処理を書く

1-1.拡張子を「.xlsm」として保存する

vbaは、エクセルのファイル拡張子が「.xlsm」でないと使うことができません。

ですので、ファイル保存時に「.xlsm」として保存する必要があります。

図1:拡張子の設定
図1:拡張子の設定

1-2.データを作成する

拡張子が「.xlsm」のファイルを作ったら、データを作成していきましょう。

Excelを開いて、新規のシートを作成し、データを追加します。
(シート名や書き込むセルの場所はどこでもOKですが、vbaにも影響ができるので適宜変更してください。)

図2:データの作成手順①
図2:データの作成手順①

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

図3:データの作成手順②
図3:データの作成手順②

RAND:
 0 以上1未満の実数をランダムに返す関数。
 ワークシートが計算されるたびに、新しい実数の乱数が返される。

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

図4:データの作成手順③
図4:データの作成手順③

1-3.表示させるシートを作成する

データを作成したら、ランダム抽出させるシートを作っていきましょう。

ランダム抽出を表示したいセルには「=抽出したいExcelシート名!セルの番号」を書けばOKです。

補足:
例)赤枠に別シートの情報を入れたい場合の手順。

図5:表示シートの作成手順①
図5:表示シートの作成手順①

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

図6:表示シートの作成手順②
図6:表示シートの作成手順②

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

図7:表示シートの作成手順③
図7:表示シートの作成手順③
図8:表示シートの作成手順④
図8:表示シートの作成手順④
さすを
さすを

項目名も同様に行えばOKです!

1-4.開発タブを表示させる

表示させたいデータを作成したら、開発タブをExcelに表示させていきましょう。

さすを
さすを

エクセルのタブに「開発」があればこの項目はスキップしてください!

開発タブの表示方法は以下の3ステップです。

  1. Excel上で「ファイル」→「オプション」→ 「リボンのユーザー設定」の順にクリックする。
  2. 左画面から「開発」をクリックし、「追加(A)>>」をクリックする。
  3. 画面右下の「OK」をクリックする。

これらの作業をすると、Excelのタブに開発タブが出現します。

図9:開発タブの出し方
図9:開発タブの出し方

これで、vbaで処理を書く環境が整いました。

1-5.vbaで処理を書く

「開発タブ」→「挿入」→「ボタン(フォーム コントロール」の順にクリックし、任意の場所にボタンを作成します。

図10:vbaの作成手順①
図10:vbaの作成手順①

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

図11:vbaの作成手順②
図11:vbaの作成手順②

以下のソースコードをコピーして貼り付ければ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

注意:

  • 1行目はデフォルトの状態(変更しない)でOKです。
  • 7,10,13,22行目のセル番号は適宜変更する必要があります。
  • 9,10,12,21行目は設定したシート名に変更する必要があります。
図12:vbaの作成手順③
図12:vbaの作成手順③

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

図13:結果画面
図13:結果画面

なお、ボタンの名前を変えたい場合は、ボタンを右クリックし「テキストの編集(X)」をクリックすればOKです。

2.【Excel】vbaを使わずに別シートからランダム抽出もできる

2.【Excel】vbaを使わずに別シートからランダム抽出もできる

ここまでvbaを使って別シートからランダム抽出する方法を紹介しましたが、慣れていないとなかなか難しいと思います。

他にvbaを使ってみようとしても、一から調べるのは大変ですよね。

そこでおすすめしたいのが「マクロの記録」です。

マクロの記録:
「マクロの記録」ボタンを押してから「記録終了」ボタンを押すまでの、エクセルでの作業内容が自動的にマクロ化される仕組み

https://diamond.jp/articles/-/256894

マクロの記録を使うことで、vbaを使わずに自動でExcelを操作することができるようになります。

自動でExcelを操作してみたい!

でも、vbaは難しくて手が付けられない…

という方はぜひ触ってみてください。

さすを
さすを

「マクロの記録」は、開発タブの中にあります!

最後に:自動化で作業効率を上げていこう

vbaを使ってExcelの別シートからランダムでデータを抽出して表示する方法を解説してきました。

身近なExcelで自動化ができるようになると、作業効率がかなり変わってきます。

偉そうなことを言ってしまいましたが、僕もまだまだvbaを使いこなせていないので、コツコツ学んでいきたいと思います。

この記事が少しでも役に立っていたらうれしいです!

それでは!

>>【無料】Twitterの「いいね」を自動でする方法【注意:使用はしないでください】

>>Pythonを使って複数枚の画像を自動でExcelに張り付ける方法を徹底解説!【図解あり】


コメント

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