• ベストアンサー

エクセル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

専門家に質問してみよう