• ベストアンサー

エクセルVBAで集計に関するプログラミング

エクセルで、単語帳を作っているのですが、覚えたものはセルの背景を赤にして、間違えたものは青にしてるんです。 それで、単語のデータベースからセルの背景が青のものだけを抽出するプログラムを作りたいのですが、VBAをどうやって書くかよくわからないし、ネットでいろいろ調べてもわかりません。どうしたらいいでしょうか。

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

いやまぁVBAでもほんの10行程度ですむコードですから別に良いんですけど、受験勉強中ならもうちょっと簡単な仕組みにして、時間を有効に使った方がよいかと思いますが。 細かい仕様がわからないとサンプルコードしか示せませんし、それを状況にあわせて修正するということが、おそらく質問者さんのスキルでは数時間以上の労力がかかりそうです。 例えば覚えた単語の右の列に1、覚えていないのは0を入力して、条件付関数を使って色をつけるとか。 http://excel.onushi.com/purpose/cform-set.htm でオートフィルタで0や1を目印に抜き出すようにするとか。 http://www.eurus.dti.ne.jp/yoneyama/Excel/filter.htm これだと5分で終わります。 一応デバック無しに勢いで書いたサンプルはこれです。 Sub test() Dim myRange As Range Dim WS0 As Worksheet Dim WS1 As Worksheet Dim WS2 As Worksheet Dim WS1_Rows As Integer Dim WS2_Rows As Integer Set WS0 = ActiveSheet '不要シートの削除 'コメントアウトしています。 'Dim WS As Worksheet 'Application.DisplayAlerts = False 'For Each WS In ActiveWorkbook.Worksheets ' If WS.Name <> WS0.Name Then WS.Delete 'Next 'Application.DisplayAlerts = True 'シートを追加 Set WS1 = Sheets.Add Set WS2 = Sheets.Add WS1.Name = "覚えた単語" WS2.Name = "覚えていない単語" '色によってシートに書き出す For Each myRange In WS0.UsedRange Select Case myRange.Interior.ColorIndex Case 3 '赤 WS1_Rows = WS1_Rows + 1 WS1.Cells(WS1_Rows, 1) = myRange.Value Case 5 '青 WS2_Rows = WS2_Rows + 1 WS2.Cells(WS2_Rows, 1) = myRange.Value End Select Next End Sub

関連するQ&A

  • エクセル2003のVBAで困っています。

    エクセル2003のVBAで困っています。 D3~D50の中で○のセルが合った場合にその行のA列~C列までのセル背景を青く塗るようにしたいです。 ちなみに△の場合は黄色で×の場合は赤色でそれ以外の場合は塗色なしにしたいです。 上記の説明が分かにくいかもしれないので、もう少し具体例を言います。 D3~D50の中でD5が○だったらA5~C5の背景を青色 D10が△だったらA10~C10の背景を黄色 D15が×だったらA15~C15の背景を赤色 D20がそれ以外だったらA20~C20の背景を塗色なし を各行(D3~D50)になるようにしたいです。 以上ですが、急ぎですので誰かお願い致します。

  • エクセルで期間集計したい!

    お世話になります。 エクセルで、マクロとVBAを使ってデータベースから抽出するソフトを 作りたいです。 フォームコントロールに入力された期間に関係するデータをすべて抽出させたい のですが、どうすればいいのでしょうか? どうぞよろしくご回答お願いいたします。

  • ExcelでのVBAの質問となります

    ExcelでのVBAの質問となります。どなたか親切な方プログラムの書き方作り方について優秀な知恵をお貸しくださいよろしくおねがいします。 質問内容は詳細を見てください 画像も備えさせていただきましたが分かりにくいと思うのですが、赤で囲んだエクセルのセル内容をメモ帳で書き込み後改行する(クリップボードを使用)を作成するにあたりマクロを作りたいと思うのですが。どんな感じでVBAプログラムを作成すればいいのか教えてください。できれば詳しい例題(参照)を書いていただけると有難いです。 バッチファイルも作りたいのですがもしバッチファイルでも作成できる場合はバッチファイル用例題とVBA例題の両方をこんな感じって具合にプログラムの組み方を詳しく教えて頂きたいです。 優秀な知恵の持ち主様どうかよろしくお願いします 補足 正確には(1)の画像の前に手順があるのてせすが以下省略してあるため分かりにくかったと思わりるため補足します。 本来はオートフィル機能で検索した結果を(1)画像の赤□内に抽出(書き込み)した後にメモ帳に追加してけるようにマクロをつくるとゆうもののプログラムを作成するつもりだったため。 オートフィル機能で検索した結果を(1)画像の赤□内に抽出(書き込み)のマクロをすでに作成できたけれど次の段階のプログラムが作れなかったためぜひ知識が詳しい方回答よろしくお願いします。 もしできない場合はテキストBOXなどつくろうと思うのですが、作り方がよくわからないため詳しい説明を書いていただけると有難いです。 図書館等を使ったりくぐったりしていますが、独学では分かり兼ねるところがあったため知恵がある方に質問しました。

  • エクセルVBA 条件にあうときセルを塗りつぶすには?

    エクセルVBA 条件にあうときセルを塗りつぶすには? エクセルVBAについて教えてください。 _________A 列 _________B 列_________C列_________D列 -------------------------------------------- 1行| 基準値_________ 5_____________1____________8 2行| りんご____________1_____________9____________0 3行| みかん___________12___________5____________3 4行| ぶどう____________15___________7____________8 5行| バナナ____________3_____________1____________4 上図のようにデータがあります。 (実物は列行共に膨大です。また条件を4つ以上つける予定なので条件付書式は使えません) 各列の基準値に対して、セルの増減が、0以下のときに黄色に、5から8のとき大きくなるときに赤、9以上のときに青にセルの色を塗りつぶしたいです。 どのようにすればよいでしょうか? B列の場合、基準値が5です。 B2のセルの場合、基準値5と1(B2セル)の増減は-4です。 増減が0以下のときは黄色に、増減が5から8のときは赤に、増減が9以上のときに青にするので、このときは黄色に塗りつぶします。 B3のセルの場合、基準値5と12(B3セル)の増減は7です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 B4のセルの場合、基準値5と15(B4セル)の増減は10です。 増減が9以上のとき青色に塗りつぶすので、このセルは青色に塗りつぶします。 C2のセルの場合は、C列の基準値は1(C1セル)です。 基準値1と9(C2のセル)の増減は8です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 よろしくお願いいたします。

  • エクセルのVBAを使った条件付き書式

    VBAの初心者です。というか使ったことがありません。 4つ以上の条件付き書式はVBAが必要になるようなので困惑中です。 下記の条件付き書式をVBA作りたいと思っています。 「1」を含む値の場合セルの背景を黄色に 「2」を含む値の場合セルの背景を緑色に 「3」を含む値の場合セルの背景を水色に 「4」を含む値の場合セルの背景を赤色に 例) 1北海道 → セルの背景を黄色 2山形 → セルの背景を緑 これを実現するVBAのコードを教えてください。 また、そのコードをどこに貼付ければいいのでしょうか? まったくの初心者で申し訳ありません。

  • エクセルVBAについて

    エクセルVBAについて 選択したセルの、列の背景の塗りつぶしの色を変化させたいと思っています。 また、他の列のセルを選択すると、今まで選択していたセルの列は、塗りつぶしなしの状態に戻ってほしいのですが(塗りつぶしの列が切り替わる)このようなことは可能でしょうか? どうぞ、よろしくお願いいたします。

  • EXCEL VBAで特定のセルの値による判定について

    すいません、EXCEL VBAで質問があります。 A1~A9 空欄 A10 "赤" A11~A16 空欄 A17 "青" A18~A21 空欄 A22 "青" A23~A35 空欄 A36 "赤" ・・・ A列の1000行までの間にランダムに赤か青の値が入っています。 A列の空欄のセルについて、下のセルを見ていき、 最初に来る値が赤であれば、それまでの空欄に"りんご"、青であれば"みかん"という値を入れる処理をVBAでやるにはどうしたらいいのでしょうか。 上の例でいうと、A1~A9及びA23~A35のセルには"りんご"、A11~A16及びA18~A21のセルには"みかん"と入ります。 do until~loopやfor~nextでやろうとしましたがどうにもうまくいきません。 よろしくお願いいたします。

  • エクセルの背景色を数値化

    エクセルについての質問です。 例えば10×10の100マスのセルに ランダムに8色のセルの背景色が設定してあり、 それぞれのセル上に自動で背景色が赤なら「1」、 青なら「2」・・・等の表示を行う事は可能でしょうか? 宜しくお願い致します。

  • VBAについて

    エクセルVBAについての質問です。 A1~A1000までのセルにURLが入っているとして 1つのセルに2つ以上のURLが入力されている場合、 2つ目以降のURLを抽出し、隣のセルに1つずつ貼り付けるような プログラムはどのように組めばよいのでしょうか? たとえば、 A50のセルに3つのURLが入力されていたら 1つ目のURLはA50 2つ目のURLはB50 3つ目のURLはC50 に貼り付けるようなプログラムです。 ご存じの方いらっしゃいましたらよろしくお願いします。

  • エクセル+VBAからデータベースを使う場合、何がよいでしょうか?

    連続質問で恐縮ですが、教えてください。 エクセル+VBAで株価分析を行おうと思い、データをアクセスに記録するようにしようとしていましたが、 データ量が増えると、アクセスだと重くなるとの指摘を頂きました。 プログラムはエクセル+VBAで書きたいと思っているのですが、 エクセル+VBAから使いやすいデータベースって、アクセスの他にあるでしょうか? 出来上がったプログラムは、スタンドアロンというか、私一人で使用します。 よろしくお願いいたします。