• ベストアンサー

データの配列への格納について(VBA)

いつもお世話になっております。 VBAでのデータの抽出及び配列への格納についてお尋ねします。 貼付ファイルのようなデータがあります。 例えばこの中から『茨城県』のデータのみを配列に格納する場合はどのようにするのが良いでしょうか? オートフィルタ―?Find?など自分なりに考えてみたのですが・・・ 最終的には、ユーザーフォームで指定した項目に対してデータを抽出し、分析を行いたいと考えています。 どなたか御教授ください。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 今回の場合はオートフィルタが良いと思います。 画像通りの配置だとして・・・ Dim lastRow As Long, myRng As Range lastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("A1").AutoFilter field:=1, Criteria1:="茨城県" Set myRng = Range(Cells(2, "A"), Cells(lastRow, "D")).SpecialCells(xlCellTypeVisible) ActiveSheet.AutoFilterMode = False のようにすれば myRngに「茨城県」のA~D列データが格納されています。m(_ _)m

genta1019boston
質問者

お礼

どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAの配列の格納について

    エクセルのVBAで、セルのデータを配列に格納するスピードを向上したいと思います。 例えば、A1~A10000のセルにデータを書き出す場合、 For 行番号 = 1 To 10000 Cells(行番号, 1).Value = 1 Next よりも、一旦、配列に書き込んだ後、一気にセルに書き込んだ方法が早いのですが、 For 行番号 = 1 To 10000 HAIRETU(行番号, 1) = 1 Next Range("A1:A10000").Value = HAIRETU() 今度は、A1~A10000に書き込んだデータを、再度、配列に格納する場合、 For 行番号 = 1 To 10000 HAIRETU(行番号, 1) = Cells(行番号, 1).Value Next とすると時間がかかるので、 HAIRETU() = Range("A1:A10000").Value というような処理をしたいのですが、うまくいきません。 よい方法がありましたら、ご教授ください。 よろしくお願いします。

  • VBA(多くの数値データの最小値5つを格納する方法)

    VBA(多くの数値データの最小値5つを格納する方法) 現在テキストファイルの数値データを取り出し最小値5つを書き出す動作をVBAで行うつもりでいます。 例  5    9    33    11    1    0.3    0.02     ・     ・     ・     ・ といった形の数値データ行がテキストファイルに存在します。 今現在すべての数値データを格納してエクセルに書き出しそれを並び替え最小値5つ(0を除く)を見て作業を行っております。 この作業をより効率化するために、VBAを用いて0を除いた最小値5つをエクセルシートに書き出すようにしたいのですが、VBAの知識が足らず対策が思い浮かびません。 ・VBAで行いたいこと(わからない部分) 格納するデータを5つに設定して、数値データを順次読み込み最終的に数値データ群の最小値5つ(0を除く)を配列に格納している状態にしたい。 初歩的かもしれませんが、ご回答お願いいたします。

  • VBAでエクセルのいくつかの表を同じ配列に格納する

    VBA初心者です。 調べてみましたがどうにも情報に行きあたらなく、ご質問をさせていただきます。 添付のようなエクセル上の同一シート上にある3つの表をコピーし、VBAで同じ配列の各列として取り込みをしたいと考えております。 大分類、中分類、小分類のそれぞれの行は同じもののそれぞれの内容を記載しており、 できればこれらを同じ配列の1列目、2列目、3列目に格納をしたいと思っております。 これらの表が1つの表にまとまっていれば、 Dim 配列(1,10) as Variant 配列 =range("A1:C10") で事足りると思うのですが、別々のためこの方法がとれません。 セル指定で行うことも考えましたが、データが10万行を超える場合もあるため、できれば避けたいと思っています。 各表を指定し、配列の1列目、2列目、3列目に一括して代入をご存じでしたらら、どうぞ教えていただきたいと思います。 どうぞよろしくお願いします。

  • 【VBA】オートフィルタ後のデータの扱いについて

    閲覧ありがとうございます。 質問なのですが、現在、オートフィルタ後のデータを下記例のように とりこもうとしていますが、失敗しております。 オートフィルタ後のデータをVariant型の変数に 二次元配列としてとりこむにはどうすればよろしいでしょうか? よろしくお願いします。 ■例 [点数]列を[50点以上]でオートフィルタで抽出 ┃  ┃ A ┃ B ┃ C ┃ ╋━╋━━╋━━╋━━╋━ ┃1 ┃番号┃名前┃点数┃ ╋━╋━━╋━━╋━━╋━ ┃21┃ 3 ┃田中┃ 50 ┃ ╋━╋━━╋━━╋━━╋━ ┃25┃ 5 ┃渡辺┃ 52 ┃ ╋━╋━━╋━━╋━━╋━ ┃42┃ 9 ┃佐藤┃ 89 ┃ ╋━╋━━╋━━╋━━╋━ ■現在のコード Dim arr as Variant arr = ActiveSheet.Range("A2:C42").SpecialCells(xlCellTypeVisible) ■結果 変数arrには21行目のデータ(3、田中、50)しか格納されない。

  • エクセルVBAでの複数条件でオートフィルタをする方法

    VBA初心者です。 例えば、シートに A  B 1 桃  100 2 柿  150 3 葡萄 400 というデータが書いてあって、ある時は「桃or柿」、またある時は「柿」だけ、「柿or葡萄」というようにVBAでオートフィルタをかけてデータを抽出したいと思っています。 その条件は、別にリストボックスが用意されていて、ユーザが選択した項目に該当するデータだけを取得したいのですが・・・ 不特定数の複数項目をオートフィルタの「or」条件で結ぶ事が出来ずに困っています。それともオートフィルタでは無理なのでしょうか? (知識が乏しくてすみません) どなたか良い解決策、または別策がありましたらご教授下さい。

  • 配列名を取得するVBA?

    ACCESSを使って勉強中です。 VBAを記述中に疑問がわきましたのでどなたか教えてください。。 配列 a(4)の中には1か2のデータが格納されるようになっています。 格納されるのはランダムになっています。 そこで、配列の中に1があったら、それが何番目にはいっているのか a(?)というのを取得したいのですが、そういうことは可能でしょうか? よろしくお願いします。

  • VBAでのデータ処理

    こんばんは。 一行目のD列からM列まで日付がはいっています。 二行目以降のA列からC列は文字列や数値があります。 (横軸に月日、縦軸に項目など・・・ガントチャートのような感じです) 日付が仮にD列から順に 5/13 5/14 5/15 5/16 5/17 5/18 5/19 5/20 5/21 5/22 とします。 A1に任意の日付を入れて(5/19とします) A1と同じ日付をD~M列から見つけて、 オートフィルタにして、 5/19の列(J列)で“会議”を抽出して、 オートフィルタで抽出した結果のA~C列をA20のセルに貼り付ける というようにしたいと考えています。最近、Findメソッドというのを知りましたが、参考書の例は「なるほど」と分かった気になるのですが、 応用がききません。Findを使ってお教えいただけたら助かります。 宜しくお願いします。

  • オートフィルタで抽出したデータの行を削除(VBAで記述)

    Excel2000を利用しています。 VBAで、オートフィルタを利用した作業を記述したいと思っています。 データは一行目にタイトルが入っています。 オートフィルタで抽出したデータを その行まるまる削除したいと思っています。 その時、タイトル行(1行目)を除いて オートフィルタで抽出された行のみ選択して 削除する、という場合、どのように記述すればよいのでしょうか。 自分では全然分からないので 教えてください、よろしくお願い致します。

  • オートフィルタオプションをVBAで指定したい

    表中に、このような列があるとします。 肩ロース100g 肩ロース500g ヒレ100g ヒレ250g ヒレ500g レバー100g レバー250g 他の列には注文日や個数、小計金額があるとします。 オートフィルタをかけて、フィルタオプションで「○○で始まる」を指定し、例えばレバーの行のみを手作業で抽出することはできます。 この動作を、フィルタオプションでの設定を経由せずに行えないものでしょうか? たとえば、別の列などに「肩ロース」「ヒレ」「レバー」が記載されていて、そのデータを元にオートフィルタの▼をクリックすると「肩ロース」「ヒレ」のように抽出条件データが表示される、というふうには出来ないものでしょうか? VBA等を使用しても構いません。 抽出項目は固定ですので、コード中に記述しても構いません。 動作が要望を満たせば、オートフィルタを使用しなくても構いません。 フォームウィンドウで抽出項目を指定し、その項目をCriteria等に設定してフィルタオプションでも構いません(この方法は自力で出来そうですが)。 良い方法があれば、お教え下さい。

  • VBAの使い方を教えて下さい

    説明が下手ですすみません。 下には条件を書くので教えていただけると幸いです。 エクセル VBA ユーザーフォーム上で、距離のからまででオートフィルタがボタン一発で出来るようにしたいです。 【前提条件】 Sheet1のA列に、0mから1000mまでの距離のデータがあります。 その他列にはその場所に何々があるなどのデータがあります。 【やりたいこと】 ユーザーフォームに何メーターから何メーターまでと数字を入れて、ボタンを押せばその間のデータが出せるようにしたいです。 そのコードをお解りでしたら教えてください。 よろしくお願い致します。

専門家に質問してみよう