Excelでデータ抽出マクロを使って数値のデータ個数を分析する方法

このQ&Aのポイント
  • ExcelでB~Hまでの範囲にランダムな数字のデータがあり、個数を一括で把握する方法を解説します。
  • マクロを使って数値のデータ個数を一覧表示する方法を紹介します。
  • 特定の値をクリックすると、その値に対応するデータがどこにあるかを強調表示する方法を説明します。
回答を見る
  • ベストアンサー

データ抽出マクロ?

 お世話になります! ExcelでB~Hまで”1~50”の数字のデータがランダムに入力してあり、その各数のデータ個数が一目で分かる様”J1~S1”に1~10、”J2~S2”に1~10のデータ個数をCOUNTIF関数にて求められる様になっています。   同様に”J3~S3”に11~20、”J4~S4”に11~20のデータ個数・・・数字の下にデータ個数という様、一行置きにJ10~S10まであります。  そこで今回やりたいのは例えば・・・J1をクリックするとJ2に求められた”1”のデータが”B~H”の範囲の何処にあるか分かる様、”1”だけが太字になる、もしくは赤字になるという様にできますか? 同様に50まで出来る様にしたいです。  すいませんが素人の為、今目的を見つけて勉強しているところなので 宜しくお願いします!

noname#87378
noname#87378

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

習い始めということなので、簡単な@「習い始め用」サンプルをひとつ。 最初はデータ範囲をB~H列など列全体ではなく B1~H6、とか小さな範囲でやってみましょう。 ---------------------------------------- データシート: Sheet1 データ範囲_: B1~H6 また、結果が一目でわかるように、 ヒットしたセルの文字の色ではなく、セルの色を赤にした 以下のコードを標準モジュールではなく、 Sheet1のモジュールにコピペすること。 '----------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range)  Dim C As Integer  Dim R As Long  If Target.Row = 2 Or Target.Row = 4 Or _    Target.Row = 6 Or Target.Row = 8 Or Target.Row > 9 Then Exit Sub  If Target.Column < 10 Or Target.Column > 19 Then Exit Sub  Range("B1:H6").Interior.ColorIndex = xlNone  For R = 1 To 6 '●1~6行    For C = 2 To 8 '●B~H列      If Cells(R, C).Value = Target.Value Then        Cells(R, C).Interior.ColorIndex = 3      End If    Next C  Next R End Sub '------------------------- 見れば分かると思いますが、 上記は範囲のデータをひとつずつ比較していますので データ範囲が広い場合には処理速度が低下します。 で、そのときはFindメソッドなどを使いスピードアップを図ることになりますが、 いまのところはそこまでは考えなくていいでしょう。 ■VBA習得にはちょと時間が掛かると思いますが、   途中で投げ出さないよう頑張りましょうねぃ。(^^;;; 以上ここまで。

noname#87378
質問者

お礼

myRangeさん、度々ありがとうございます! おかげさまで開くことができました。  サンプルまで親切にありがとうございます! 本当に難しくてかなり悪戦していますが、何とか諦めずに頑張ってみます!  

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

こういう場合、仕様の整理から始めます。 【前提】 (1)B1~H1までの7個のセルに数値が記録されている。 (2)上記の数値は1~50までの整数で、重複もあり得る。 (3)J1~S1には1~10の数値が見出しとして表示される。 (4)J2~S2には直上のセルと同じ値が(1)の中に何回現れたかを示す回数が表示されている。 (5)J3~S3には11~20の数値が見出しとして表示される。 (6)J4~S4には直上のセルと同じ値が(1)の中に何回現れたかを示す回数が表示されている。 (7)以下、同様に数値の見出しと、出現回数の表示が50まで続く。 【機能】(やりたいこと) (1)J1~S9までのセルをクリックした時に行う。但し、奇数行のみ (2)B1~H1のフォントを標準に戻す。 (3)クリックされたセルにある数値と同じ値をB1~H1の間で検索 (4)同じ値のセルの文字フォントを「太字」あるいは「赤」に変える こういう仕様で間違いないか検討する所から始めます。 その上で、機能面の一つ一つについて、実現手段を探ります。 いきなり、コーディングサンプルを貰って、コピペして成功しても 殆ど勉強にならないと思います・

noname#87378
質問者

お礼

nda23さん、ありがとうございます! >いきなり、コーディングサンプルを貰って、コピペして成功しても 殆ど勉強にならないと思います 確かにそうですね。   ・・・でもやはり難しく悪戦しています。(-_-#)

関連するQ&A

  • データ抽出マクロ

     お世話になります! ExcelでB~Gまで”1~45”の数字のデータがランダムに入力してあり、その各数のデータ個数が一目で分かる様見出しとして”J2~X2”に1~15、 ”J3~X3”に1~15の各データ個数をCOUNTIF関数にて求められる様になっています。    同様に見出し”J4~X4”に16~30、”J5~X5”に 16~30のデータ個数・・数字の下にデータ個数という様、一行置きにJ2~X7まであります。  そこで今回やりたいのは例えば・・・J2のセルをクリックするとJ3に求められた”1”のデータが”B~G”の範囲の何処にあるか分かる様、”1”だけのセルが赤くなるという様にすることは可能でしょうか? 同様に45まで出来る様にしたいです。 すいませんが素人の為、宜しくお願いいたします。

  • リスト内のデータ抽出方法

    下図のようなリストがあります。 1.0 2.5 4.5 6.8 0.6 0 9.5 14 15 このリストの中で、5を超え10以下の数字の個数を調べたい時はどうしたらよいのでしょうか?一応COUNTIFの関数を使ってみたのですが、どうもうまくいきませんでした。

  • excel関数(countif)

    countif関数の使い方についてお伺いします。 countif関数の検索条件として、6分の1,3分の1などはどのように設定すればいいのでしょうか。それぞれ、excel上は16.7(=16.66666・・・),33.3(=33.33333・・・)などと表記されますが、割り切れない数字なので、「16.7」「33.3」と入れても当然正しいカウントはできません。 例えば範囲をH3:H13とすると、その範囲の中にある数字が順に以下のようになった場合 H3 ・・・ 50 H4 ・・・ 33.3(=33.33333・・・) H5 ・・・ 25 H6 ・・・ 40 H7 ・・・ 16.7(=16.66666・・・) H8 ・・・ 100 H9 ・・・ 16.7(=16.66666・・・) H10・・・ 50 H11・・・ 33.3(=33.33333・・・) H12・・・ 0 H13・・・ 16.7(=16.66666・・・) この範囲での50の個数はcountif(H3:H13,50)=2となります。 では、16.7(=6分の1)や33.3(=3分の1)はどのように関数を作ればいいのでしょうか? よろしくお願いします。

  • エクセルでデータの抽出

    あるエクセルの表に以下のようなデータが何百件と並んでるとします。 この中からアルファベットのHが含まれるものだけを抽出したいのですが、どのようにすればでいいでしょうか?(出来ますか?) オートフィルタやデータの並べ替えでもうまくできません。 どなたか分かるかた教えてください。 03H1 04H2 04J1 04J3 04S2 05H1 05S3 06T3 06H2 ・ ・ ・

  • 【エクセル】セルにどんなデータがいくつあるか調べたい

    例えば、A1~A1000までのセルに任意のデータがあり どのデータがいくつあるかを調べたいのです。 現在、データを1コ1コ調べて COUNTIF(A1:A1000,"データ")で行ってるのですが データもランダムで個数も5000を超えてきて 調べるのも困難な状況です。 簡単にデータの種類と個数を調べる方法を教えてください。 何卒よろしくお願いいたします。

  • Excelで=COUNTIFの関数で出た数字に対して正の数の場合、フォ

    Excelで=COUNTIFの関数で出た数字に対して正の数の場合、フォントを黒にして 負の数の場合には、フォントを赤字で太字にする場合どのような書式設定にすればよいですか?

  • エクセルで、0~9数字の中で使ってない数字を抽出す

    エクセルで、A1~L1のセルに0~9の数字がランダムで並んでるとします。0~9数字の中で使ってない数字をM1以降に並べたいのです。関数を使ってやりたいのですが、誰かご教授下さい。 こんな感じですが・・・   A・B・C・D・E・F・G・H・I・J・K・L---M・N 1  1・1・4・9・8・0・3・2・5・5・4・2----6・7 2  4・6・7・3・2・5・1・0・1・9・6・4----8 3  7・0・5・9・1・3・9・4・7・8・7・6----2

  • ms エクセル 2003で複数データーの抽出

    ms エクセル 2003で複数データーの抽出貼り付け (例)下のようにA1セル縦にランダムに数字が並んでいます。この縦に 並んでいる数字をB1~B6に任意の範囲に並べる式又は関数をおしえて   A        B               ください。 1 6 16 26 36    1~8までを横に並べる(1 3 5 6 8 )―――例 2 8 18 28 38 12~16までを横に並べる(     ) 3 2 12 22 32 42 11~23までを横に並べる(     ) 4 3 13 23 33 43 20~31までを横に並べる(     ) 5 5 15 25 35 33~39までを横に並べる(     ) 6 1 11 21 21 41 36~43までを横に並べる(     )

  • 特定の列の最初にあるデーター抽出

    Sheet1のB5からB65までのセルにランダムで数字が入れてありますが必ずどのセルにも数字が入っているわけでは無く空白のセルも数字の入ったセルも混在しています。 この列の最後の数字をSheet2の任意のセルに抜き出すには、Lookup関数でできますが、列の最初の数字を抜き出すにはどのような関数で行えるのか教えてください。

  • 特定の文字や数字だけを抽出

    14H010 14S001 14005 14H001B 14H010B 14005 14S004 1)左から2つだけの数字だけを取り出す方法 2)もし左から二つの数字の隣の文字だけ(HやS)を取り出す方法(2文字の可能性もある) 3)真ん中の3つの数字を取り出す方法(010,001,005) 4)右の文字(B)だけを取り出す方法(2文字の可能性もある) それぞれの方法をIF関数とLEN, RIGHT, LEFT, MID関数の組み合わせを使って抽出できるようなのですが、何時間かけても抽出ができません、、、。 たくさんの質問になりますがお答えいただけると幸いです。

専門家に質問してみよう