エクセルVBAで外部ファイルからデータをランダムに取得する方法【VBA】

目次

経緯

エクセルのVBA(Visual Basic for Applications)は、日々の作業を効率化するための強力なツールです。今回は、外部のエクセルファイルからランダムにデータを取得し、現在の作業中のシートにそのデータを反映させる方法を紹介します。この技術は、大量のデータからランダムにサンプルを抽出する際などに非常に便利です。

コード

まず、コードを書きます。hayashi.xlsxのデータを取得しています。

Sub FillAdjacentCellFromExternalFile()

    Dim TargetCell As Range
    Dim ExternalWorkbook As Workbook
    Dim DatabaseRange As Range
    Dim RandomText As String
    Dim AdjacentText As String

    ' 対象のセルをアクティブなセルとして設定
    Set TargetCell = ActiveCell

    ' 外部のExcelファイルを開く
    Set ExternalWorkbook = Workbooks.Open("C:\Users\mori\デスクトップ\hayashi.xlsx")

    ' データベースの範囲を設定 (例: C1:C100)
    Set DatabaseRange = ExternalWorkbook.Sheets(2).Range("C1:C100")

    ' ランダムに文字を取得 & 隣のセルの文字も取得
    RandomText = GetRandomText(DatabaseRange, AdjacentText)

    ' F列のセルにランダムに取得したデータを設定
    TargetCell.Value = RandomText
    
    ' O列のセルにランダムに取得したセルの隣のデータを設定
    TargetCell.Offset(0, 8).Value = AdjacentText

    ' メッセージボックスで取得した文字を表示
    MsgBox "取得した文字: " & RandomText

    ' 外部のExcelファイルを閉じる(変更を保存せず)
    ExternalWorkbook.Close SaveChanges:=False

End Sub

Function GetRandomText(rng As Range, ByRef AdjacentData As String) As String
    Dim RandomIndex As Long
    Dim MaxRow As Long

    Randomize ' この行を追加

    ' ランダムにインデックスを取得
    MaxRow = rng.Rows.Count
    RandomIndex = Int((MaxRow - 1 + 1) * Rnd + 1)
    
    ' 隣のセルのデータを取得
    AdjacentData = rng.Cells(RandomIndex, 2).Value

    ' ランダムに取得した文字を返す
    GetRandomText = rng.Cells(RandomIndex, 1).Value

    ' 診断情報を表示
    MsgBox "最大の行数: " & MaxRow & vbCrLf & "ランダムに選択されたインデックス: " & RandomIndex & vbCrLf & "取得されたテキスト: " & GetRandomText

End Function

基本的なコードの構造

示されたVBAコードは、大きく分けて二つの部分から構成されています。一つはメインのサブルーチン Sub FillAdjacentCellFromExternalFile()、もう一つは補助的な関数 Function GetRandomText()です。

Sub FillAdjacentCellFromExternalFile()

このサブルーチンの役割は、外部ファイルを開いて特定の範囲(この例ではC1:C100)からランダムにテキストを取得し、それをアクティブなセルとその隣のセルに挿入することです。また、取得したデータをメッセージボックスで表示し、最後に外部ファイルを閉じます。

Function GetRandomText()

この関数は、指定された範囲からランダムにテキストを選び出し、その隣のセルのデータも取得する役割を担っています。ランダムなインデックスの生成にはRnd関数を使用し、関連する診断情報をメッセージボックスで表示します。

注意点と改善の余地

このコードを使用する際には、いくつかの注意点があります。まず、外部ファイルのパスが固定されているため、ファイルの場所が変わった場合はパスを更新する必要があります。また、エラーハンドリングが含まれていないため、ファイルが見つからない場合やデータ範囲が不適切な場合にはエラーが発生します。これらの点を改善することで、より堅牢で使いやすいコードにすることができます。

まとめ

エクセルVBAを用いて外部ファイルからデータをランダムに取得する方法は、データ処理や分析作業を効率化する上で非常に有益です。上記のコード例を参考に、自身のニーズに合わせてカスタマイズし、日々の業務に役立ててみてください。

何かの参考になれば幸いです。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次