• ベストアンサー

背景色の有無を判断をして別のセルに「1」と入力

任意の行を見やすくするために背景色を塗りつぶしてあります。 その塗りつぶされている行だけ、集計対象としてフラグを立てたいのですが、1シートのレコード数も大量なのでマクロでやりたいと思っています。 背景色の指定されている行は、「集計対象」という名前の別のセルに「1」とフラグを立てる方法を教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>1色だけの場合は教えていただいた方法で思い通りの結果を得られました そういうマクロではありませんが、まぁどのみち >色は、赤、青、黄色の3色で、D列で判断できます エクセル2010は沢山の色が使えるので、あなたが言ってる赤青黄色が具体的にどの色なのか、ご自分で調べて正しくマクロに反映しないといけません。 とりあえず動くやり方を回答しておくので、あとはご自分で適切に応用してください。だらだら実は実はといつまでも付き合ってと言われても、困りますので。 手順: A1セルにあなたの赤を塗る B1セルにあなたの青を塗る C1セルにあなたの黄色を塗る sub macro2()  dim r as long  for r = 2 to cells(rows.count, "D").end(xlup).row   if cells(r, "D").interior.colorindex <> xlnone then    cells(r, "U") = iif(cells(r, "D").interior.color = range("A1").interior.color, 1, "")    cells(r, "V") = iif(cells(r, "D").interior.color = range("B1").interior.color, 1, "")    cells(r, "W") = iif(cells(r, "D").interior.color = range("C1").interior.color, 1, "")   end if  next r end sub

maokongreen
質問者

お礼

ありがとうございました。 お蔭様で結果を得ることができました。 だらだらと質問してすみませんでした。

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

その他の回答 (2)

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

こんばんは! >任意の行を見やすくするために背景色を塗りつぶしてあります >1シートのレコード数も大量なので・・・ というコトですので、Excel2007以降のバージョンだという条件ですが、「色フィルタ」でやってみました。 (A列には必ず色がついているとします) 前提条件として塗りつぶしは同じ色だとします。 尚、何色に塗りつぶされているのか判らないので最初にヒットしたセルの色でフィルタをかけています。 1行目が項目行でデータは2行目以降にあり、 1行目項目の「集計対象」の列に「1」を表示するようにしてみました。 Sub Sample1() Dim i As Long, j As Long, lastRow As Long, c As Range, r As Range, myColor lastRow = Cells(Rows.Count, "A").End(xlUp).Row Set c = Rows(1).Find(what:="集計対象", LookIn:=xlValues, lookat:=xlWhole) j = c.Column For i = 2 To lastRow If Cells(i, "A").Interior.Color <> xlNone Then Exit For End If Next i myColor = Cells(i, "A").Interior.Color Range(Cells(2, j), Cells(lastRow, j)) = "" Range("A1").AutoFilter Field:=1, Criteria1:=myColor, Operator:=xlFilterCellColor Range(Cells(2, j), Cells(lastRow, j)).SpecialCells(xlCellTypeVisible) = 1 ActiveSheet.AutoFilterMode = False End Sub こんな感じではどうでしょうか?m(_ _)m

maokongreen
質問者

補足

ありがとうございます。 教えていただい方法を、今ひとつひとつ意味を調べながら勉強しています。 昨日、マクロの勉強を始めたばかりなのでまだわからないことだらけです。 No.1の方の補足にも書きましたが、背景色が1色だけでなく、3色でした。 それぞれルールに基づいて背景色を赤、青、黄色の3色で設定しており、それぞれが集計対象で、フラグを立てるセルを3列用意しました。 赤・・・U列 青・・・V列 黄・・・W列 としました。 まだtom04様に教えていただいたコードを理解できていない段階で恐縮ですが、お時間がございましたら色ごとにフラグを立てる方法も教えて下さい。 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

ご利用のエクセルのバージョンも不明のご相談ですが、エクセル2007以降を使い、オートフィルタを使って「所定の色で塗りつぶされている」あるいは「塗りつぶされていない」で絞り込んで、まとめて処置してしまうのが一番お手軽な方法です。 で。とりあえずご相談の直接の回答として。 絞り込みたい条件も不明のご相談なので、ひっくるめて「塗られてないを除く」を対象とする事にします ご利用のシートの配置状況も不明のご相談なので、ふつーに1行目にタイトル行、2行目からデータ、A列で全データの記入範囲を調査できるということにします とりあえずふつーに「A列に塗ってあるか無いか」だけで判定できることにします 「集計対象という名前」を毎回どこかで探さなきゃならないのは別のご相談という事にして、とりあえず固定の列に記入することにします sub macro1()  dim r as long  for r = 2 to cells(rows.count, "A").end(xlup).row   cells(r, "I") = iif(cells(r, "A").interior.colorindex = xlnone, "", 1)  next r end sub

maokongreen
質問者

補足

エクセルやマクロの知識がないため、曖昧な質問の仕方ですみませんでした。 エクセルは2010を使用しています。 それと、こちらで相談を投稿してから、背景色が3色使用されているファイルも出てきてしまいました。 よく調べてから投稿するべきでした。 すみません。 1色だけの場合は教えていただいた方法で思い通りの結果を得られました。 ありがといございます。 色が3色の場合はどうしたらよいでしょうか? 色は、赤、青、黄色の3色で、D列で判断できます。 フラグを立てるセルは、 赤・・・U列 青・・・V列 黄・・・W列 で設定しました。 引き続きご指導いただけますようお願いします。

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

関連するQ&A

  • Excel VBA 全てのセルを読み込み、背景色で判断

    VBA初心者です。環境はWindowsXP,Excel2003です。 よろしくお願い致します。 1~3のシートの全てのセルを読み込んで、背景色が赤色のセルの文字をシート4にコピペしたいのです。 このとき、赤色になるセルの列は必ずF~ABまで結合されています。 替わるのは何行目かという行数のみです。 (結合セルは、最初のH列と見なせば良いのであれば気にしないで下さい。) さらに、赤色のセルをコピペする際に、 赤色のセルから上に上がって、 最初の空白のあるセルの下3行も一緒にコピペして シート4に連れて行きたいのです。 ほとんどのセルは文字と数字で埋まっていますので、 空白セルを条件にすると組み易いかと考えました。 【シート4】は下記のようになる予定です。  ABCDEFGHIJKLMNOPQRSTU 1~背景色が赤かったシート1のセル~~~~~ 2~を上に行って最初の空白のあったセルの~~ 3~下3行の丸々コピペ~~~~~~~~~~~ 4~~背景色が赤かったシート1のセル内容~~ 5~背景色が赤かったシート2のセル~~~~~ 6~を上に行って最初の空白のあったセルの~~ 7~下3行の丸々コピペ~~~~~~~~~~~ 8~~背景色が赤かったシート2のセル内容~~ 9~背景色が赤かったシート1のセル~~~~~ 10~を上に行って最初の空白のあったセルの~~ 11~下3行の丸々コピペ~~~~~~~~~~~ 12~~背景色が赤かったシート1のセル内容~~ カナリの初心者なため、組まれたものは読めるのですが、 最初から組む事がなかなか出来ません。 お手数をおかけしますが、 どなたか分かる方がいらっしゃったらお願い致します。

  • セルの背景色を数えたいのですが

    Excel2000で、数値や文字が入っているセルの一部に 「背景色」(塗りつぶし色)をつけております。 この中で、範囲指定をして「特定の背景色セル」だけをCountできるような関数はありますでしょうか? また、マクロでしたらどのようにすれば良いのでしょうか? マクロの知識はほとんどありません。 (↓)のカラーパレットの最下段の2色と同じ色を 個別に指定したいと思っております。 □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ ■ □ □ □ ■ □

  • シート内の一部のセルを別シートにコピー

    Excelのマクロ(VBA)の記載方法について お分かりになる箇所だけでも結構ですので、 どなたかご教授を願い致します。 シートX   A    B   C  1 data1 data2 data3 2 x   data7 data8 3 data4 data5 data6 4 data7 data8 data9 シート Y   A   B   C    D 1 length 3  (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz  (任意) (任意) (任意) 4 (空白)(任意) (任意) (任意) 上記のような2つのシート(同一Excelファイル内)があって、 シートXの一部のセルを次の条件(1~4)でシートYにコピーしたい場合 1.コピー元の列の数は、シートYの "length"と書かれたセルの右となりの数字   とする(上記では3なので、A,B,C列をコピー対象) 2.コピー元の行の数は、シートXの1~4行目までとするが、   シートXのA列のセルが"x"だったら、その行は全てコピーしない。 3.コピー先(Y)の列は、コピー元(X)の列と一つずれてコピー(BならCに、CならDに) 4.コピー先(Y)の行は、シートYのA列で1行からで始めて空白セルになった行からコピー開始。 (上記では、A列で空白セルのある4行目からコピー) 上記条件で、下記のシートYを作成したいのですが、 この場合どようなマクロ(VBA)で実現できますでしょうか。 コピー結果(シートY)  A     B   C   D 1 length  3  (任意) (任意) 2 xxxx  (任意) (任意) (任意) 3 zzz   (任意) (任意) (任意) 4 (空白) data1 data2 data3 5 (任意) data4 data5 data6 6 (任意) data7 data8 data9

  • EXCELのセルに入力した数字より背景色の塗りつぶしを行いたいのですが

    EXCELのセルに入力した数字より背景色の塗りつぶしを行いたいのですがどうすればよいのでしょうか? 閲覧ありがとうございます。 今仕事の資料を作成しています。 かなりの初心者ですので、宜しくお願いします。 使用ソフトのバージョンは EXCEL 2003 SP3になります。 現在表を作成しており、行に数字を入れ、数字にあわせ背景色をつけたいと考えています。 ※列で数値をCountifにより集計し、1がいくつ、2がいくつ・・・・とカウントしています。 セルには1~15の数字を入れ、それぞれ数字に合わせ自動で背景色を塗りつぶすことを行いたいと考えています。 書式の条件付書式により色をつけることを考えましたが、3つの条件までしか作ることが出来ずに困っています。 おそらくVBAやマクロ等を使用しないといけないと思いますが、可能なのでしょうか? プログラミングの知識が無いので、ぜひご教授のほどよろしくお願いします。

  • 背景色赤のセルに表示された数字の集計方法

    昨日、http://okwave.jp/qa/q6535442.html で質問させて頂き解決致しました。 ありがとうございます。 その続きなのですが・・・ 背景色を変更したセルに表示されている1~50の数字を集計したいのです。 前回解決した内容を含めておさらいをしますと・・・ A~Jには、ランダムに1~50の数字1つづつ10個記入しています。 そこに記入した数字は、1ならKの、2ならLの・・・50ならBHのセル背景色が赤に変更出来るように K~BHを選択→条件付き書式→数式が→=COUNTIF($C1:$H1,COLUMN(A1)) と記入しました。 ですので、K~BHに背景色が赤のセルが10個必ずあります。 ちなみにK~BHには関数が入力されており、全て20くらいまでの数字が表示されております。 それが1000行あります。 ここからが質問なのですが、 背景色が変更されたセルに表示されている0~20くらいまでの各数字を集計したいのです。 0が表示されていて背景色が赤のセルの数をBIに表示 1が表示されている背景色が赤のセルの数をBJに表示 ・・・ 20が表示されている背景色が赤のセルの数をCCに表示 という感じにしたいのです。 背景色が変更されていない0~20もありますし、 1行に、例えば1が表示されている背景色赤のセルが0個の場合もあれば1個や2個・・・の場合もあります。 出来れば、1000行全てと、100行毎に集計が出来ればベストです。 それと背景色での集計が無理な場合は、 文字色を赤に変更し、それを集計する方法でも構いません。 マクロでも大丈夫ですが、 文法とかよくわからないのでそのまま使用出来るように書いて頂けると助かります。 (コピペで何度か使ったことはあります) 書き忘れましたが、当方のエクセルは2003,2007と両方持っています。 普段は2007を使用しております。 長くなってしまいましたが、どなたか宜しくお願い致します。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • EXCELでフォームのテキストBOXに入力した文章を別セルに書き出すマ

    EXCELでフォームのテキストBOXに入力した文章を別セルに書き出すマクロ Excel VBAでフォームのテキストBOXに入力した文章を別セルに書き出すマクロを作成しています。 普通に書き出すことと、改行コードで改行させることはできます。 しかし、改行コード&決まった文字数(任意)で改行し、改行後の先頭に句読点が来たときには句読点で改行させるようにしたいです。 (句読点が行末に来る場合、任意の文字数に+1する) どのようにしたら良いでしょうか? 今行っている方法だと、1行で文字数での改行が2回行われるとおかしくなってしまいます。 ご教授ください

  • セルの場所

    エクセルVBAにて、 指定した列から「検索」を使って該当のセルを選び出し、(1)そのセルの行をコピーして別シートに貼り付けるマクロを組みたいのですが、(1)以降の処理がどうしても組めません。officeは2000を使っています。 宜しくお願いします。

  • セルに背景色がある行を別シートにコピー

    ある一覧表があり、その中のC列のセルにある条件を満たしていれば背景色をつけています。 この色付セルがある行全体を別のシートに順次コピーして一覧表を作成させるマクロを以下のように作ってみました。 h = 6 For i = 7 To 最終行 If Worksheets("一覧表").Cells(i, "C").Interior.ColorIndex = 背景色番号 Then Sheets(1).Select Rows(i).Copy Sheets(2).Select h = h + 1 Rows(h).Select ActiveSheet.Paste End If Next データが少ないときはこれで問題がなかったのですが、件数が増えてきますと処理時間がかなり掛かります。4000件のデータで30分経っても終わりませんでした。 もっと処理時間が短くなるスマートな方法はありませんでしょうか?

  • エクセルでシートは別ですが、同じセルの集計を行いたいのですが

    自治会のアンケートの集計に頭を悩ましています。 一つ目のシートに集計結果を入力出来る表を作りました。 組が10組有りますので、シートのコピーを繰り返して10組分を作成しました。 11シート目に各組の組別の質問毎の集計表を作成しました。 アンケートの設問が23問あり、選択も各問に3項目有ります。 最初は、集計表に各組の結果を入力すれば、自動的に集計表に転記出来るにと、集計表の入れたいセルをシフト+=を押して、その組のシートを開いて、集計結果のセルをクリックして、シフト+=+エンターを繰り返していましたが、余りにも回数が700回近く行わなければ成りません。 そこで教えて頂たいのですが、 10個のシートの同じセルを、各組に入力すれば集計表に自動的に同じ数字が入る様にする方法は有るのでしょうか? 宜しくお願い致します。 マクロはさっぱり判りませんので簡単に出来る方法をご教示頂きたくお願い致します。

このQ&Aのポイント
  • 給紙トレイのカバーは印刷終了時に自動で閉まっていたのですが、先ほどから排紙トレイ格納時に引っ掛かって閉まりません。
  • カバーは開いてから印刷するのが基本だと思いますが、閉まらなくなってしまった原因が分かりません。
  • EPSON社製品のEW-M754TWについて、給紙トレイカバーが閉まらなくなった場合の対処方法や修理の必要性について教えてください。
回答を見る

専門家に質問してみよう