• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「二つのセルの条件によってセルの色替」をマクロで実施するには?)

エクセルマクロでセルの色替を実施する方法は?

このQ&Aのポイント
  • エクセルファイルの任意セルのコメントによって、あるセルを色付けする方法を教えていただけますか?
  • 条件付き書式を設定したが、マクロを使用すれば効率的に処理できると聞きました。初心者のためマクロ知識が不足しています。効率的な方法を教えてください。
  • 同じ処理を行うエクセルファイルが多数あります。効率良く作業する方法を教えていただけませんか?

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

やりたいことがよくわかりませんし 禁止事項で丸投げ禁止と有りますので 参考になりそうな、コードを提示しておきます '------------------------------------------------------------------ Sub test() Dim i As Integer For i = 1 To 512 If Range("I" & i).Value <> "" Or Range("J" & i).Value <> "" Or Range("K" & i).Value <> "" Or Range("L" & i).Value <> "" Then If Range("A" & i).Value = "使用" And Range("E" & i).Value = "使用" Then Range("I" & i).Font.ColorIndex = 7 If Range("A" & i).Value = "使用" And Range("E" & i).Value = "未使用" Then Range("I" & i).Font.ColorIndex = 8 If Range("A" & i).Value = "未使用" And Range("E" & i).Value = "未使用" Then Range("I" & i).Font.ColorIndex = 6 End If Next i End Sub '------------------------------------------------------------------ アレンジはご自分で

hima_2008
質問者

お礼

ご回答をどうもありがとうございました。 質問内容が言葉足らずだったようで反省するとともに、この場をお借りしてお詫びいたします。 それでも貴重なアドバイス、とてもありがたく参考させて頂きます。 では、失礼致します。

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

その他の回答 (3)

回答No.3

マクロとのことなので お力になれませんが条件付き書式では こんな感じでしょうか? I列からL列までを選択する(I1セルがアクティブであること) 条件付き書式 条件1 数式が =AND(A1="未使用",E1="使用",COUNTA($I1:$L1)=4)     書式で黄色 条件2 数式が =AND(A1="使用",E1="未使用",COUNTA($I1:$L1)=4)     書式でシアン 条件3 数式が =AND(A1="使用",E1="使用",COUNTA($I1:$L1)=4)     書式でピンク をマクロの記録をして対処できませんか? # コメントってセルに挿入されるコメントのことじゃないですよね

hima_2008
質問者

補足

ご回答どうもありがとうございました。 また、自分の質問が不十分だったようなので訂正します。 「1. In~Hnが空欄なら、2,3,4の処理は行わない。」 と質問に記載しましたが表現が曖昧でした。 正しくは 「1. Inが空欄ならInは色付けしない。    Jnが空欄ならJnは色付けしない。    Knが空欄ならKnは色付けしない。    Lnが空欄ならLnは色付けしない。」 です。紛らわしい書き方をしてすみません。 (ちなみに色付けの優先順位は、高いほうから順に<やりたいこと>の1→4→2→3です。) というわけですので、条件付書式設定には、CoalTarさんが回答を下さった条件式から「COUNTA($I1:$L1)=4」を省いた式を設定しています。 マクロ初心者なので、条件1、2、3数式をマクロに記録できるかどうか判りませんが、いろいろなサイトで調べて見ます。 ># コメントってセルに挿入されるコメントのことじゃないですよね はい。『コメント』とは予め入力されている文字列のことです。(An~Hnには「使用」「未使用」のいずれかが必ず入力されており、In~Lnには空欄か任意の文字列が入力されています。)

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

VBAは動態でデータを決定していくため、リアルタイムで内容が変わる 処理には余り向いていません。データを全部入力して、あとで一気に 変換する、と言うのなら比較的簡単なんですが・・・。 現状でも「条件付書式」はちゃんと出来ているようですので、「コピー」 「形式を選択して貼り付け」「書式」とすれば、「条件付書式」も きっぱりコピーしてくれます。 ちなみに「条件付書式」の参照先セルを、「=$A$1」などから「=A1」に 書き換えておくのを忘れないで下さい。これをサボると、書式コピー時 に参照先セルが自動的に変動しませんので。

hima_2008
質問者

補足

丁寧なご回答、ありがとうございます。 説明不足でした。使用するファイルは既に全データが入力されています。「使用」「未使用」のコメントは変りません。但し、行数はファイル毎に異なり、最大で512です。 やはり、条件付書式の方が簡単なようですね。 ただ、今後参照するセルが増えた場合(エクセル2000なので条件付書式では3つまでしか登録できません)どうすればよいのか考えておきたくて、投稿した次第です。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

http://officetanaka.net/excel/vba/cell/cell04.htm http://www.officepro.jp/excelvba/cell_comment/index2.html などが参考になるかもです。 違ったらごめんなさい。

hima_2008
質問者

お礼

早速のご回答、どうもありがとうございます。 添付していただいたサイトを見てみます。

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

関連するQ&A

  • マクロ(#VALUE!・不適切なデータ)でマクロ処理できないのですが。

    マクロ初心者のためすごい簡単な質問なのかもしれませんが、 調べたのですが、わからないのでおしえていただけたら幸いです。 ある列にたいして上から下までif文を使用しているのですが、 対象セル位置には 00:20:00 と時間とかが入っている列があり、 その列を上から下まで見ていって。 対象セル > 00:10:00  と 10分以上は処理するとゆうif文をしているのですが、 そのセルに(#VALUE!)がはいっていると、マクロがとまってしまうのですが、 どうしたらいいのかわからず 対象セル = #VALUE! でとれるかと思ったのですが、それでも取得できずそこでとまってしまいます。 どうしたら#VALUE!の場合は、スルーし処理を続行するとできるでしょうか?  よければコメントお願いいたします。

  • 【Excelマクロ】基準日より前の日付のセルを色付

    基準日が入力されているセル(D2)があります。 回収期限(D列)がその基準日を含む前の日付のデータ(A:D)に黄色で色付けするマクロをご教示ください。 条件付き書式はあえて対象外のデータを色塗りしたくない場合に、わざわざ条件付き書式を消すのが面倒なのでやめました。

  • エクセル マクロを使用してのセル内の値消去

    win2000 officeXpです。 現在、マクロを使用して複数のシートの特定セル内の値を消去するマクロを Sub データ消去() Worksheets("A").Range("B5:AF9").ClearContents Worksheets("B").Range("B5:AF9").ClearContents End Sub のようにしていますが、これではセルに挿入していたコメントが消去されません。 コメントも消去する方法はあるのでしょうか。  また、この方法があればもっと便利なんですが、このマクロにあるセル(B5:AF9)はロックがはずされていますので、それぞれのシート内のロックがはずされているセルを探し出し、そのセルの値とコメントを削除できるようなマクロはあるのでしょうか? よろしくお願いします。

  • Excelマクロでセルの比較

    Excelマクロでセルの比較 まだマクロ初心者なので、詳しいことがわからなくて困っております。 例)●前提として何行目まであるかは変化します     (A列)(B列) (1行目) 35  35 (2行目) 26  26 (3行目) 13  13 (n行目) 12  12 ※n=最終行 【やりたいこと】 このようにシートに入力されていたとして、 「A1=B1?」⇒「A2=B2?」⇒「A3=B3?」⇒「An=Bn?」と比較を進めていき不一致の有無を出す。 もし不一致がなければ、そのまま通過しその次のマクロを実行していく。 不一致があった場合には、不一致の行を別ファイルに出力してファイル保存し、ファイルを閉じる。 マクロを実行している元のファイルは、保存せずにファイルを閉じる) 行の長さが変化するため、その変化にも対応した処理を実行したいと思っております。 本やサイトで調べてみたのですが、基礎知識がないためうまく処理をさせるマクロを作ることが出来ませんでした。 このようなマクロが可能なのかもわかりませんが、出来ましたらこのマクロを教えていただけますでしょうか。 宜しくお願いいたします。

  • セル内の特定文字に対してマクロ実行したい

    セル内の特定文字(対象の文字はマウスで選定)に対しフォント変更のマクロを設定したいのですが方法はありましでしょうか?、マクロの内容は1)P明朝をPゴシック且つ強調文字に変更、2)その逆の2種類のマクロをつくりたいのですが・・・・セル全体のマクロは出来るのですが、対象文字を選定するとマクロの作成が出来なくなります。使用ソフトはwindowsXPと2000です。エクセルのマクロはツールバーから新規マクロ作成で自動的に作る程度しか出来ません。よろしくお願いします。

  • 【fortran】フーリエ級数について

    こんばんは。 早速ですが、質問させて頂きます。 学校の課題で一次元熱伝導方程式のプログラムを組みなさいという課題が出たのですが、入力、出力のプログラムが上手く書けずに困っています。 自分で何回もやってみたのですが、「ループがベクトル化されました」としか出ず、どこが間違っているのかも分からない状況です。 詳しい方、教えて頂ければ幸いです。 下に自分が作成したプログラムを載せておきます。 program heat implicit none integer i, n, nmax real(8) t0, t1, d, time, a, h, p, q, an0, kn, bn, en integer, parameter :: id = 100 real(8), parameter :: pi = 3.1415926535d0 real(8), parameter :: lambda = 2.5d-6, rho = 2500.d0, c = 2.35d-7 real(8), parameter :: expmax = 50.d0 real(8) x(0:id), t(0:id) ! ! Data input part (t0,t1,d,a,time,nmax) ! t0=300.0d0 ! degrees t1=200.0d0 ! degrees d =100.0d0 ! m time=1.0 ! year time = time *365.0d0*24.0d0 ! year --> hour nmax=1000 a = 1.0d6 ! Area of rock surface [m^2] h=d/id do i=0,id x(i)=i*h t(i)=t1 end do p=0.0d0 q=0.0d0 do n=1,nmax,2 an0=4.0d0/(n*pi)*(t0-t1) kn=n*pi/d bn=lambda*kn*kn/(rho*c) if(bn*time.le.expmax) then en=exp(-bn*time) else en=0.0d0 endif do i=0,id t(i)=t(1)+an0*sin(kn*x(i))*en enddo p=p+an0*kn*en q=q+an0*kn/bn*(1.0d0-en) enddo p=lambda*a*p q=lambda*a*q open(20,file=‘output.dat’) write(20,*) ‘x(i),t(i),p,q' = ‘, ‘x(i),t(i),p,q' close(20) stop end program heat

  • マクロセルの値によってセルの色を消す

    エクセル2013です。 セルの値が0又は空白の場合でそのセルが色塗りされていたら色を消す というマクロをを作成しました。 ただ700行55列では処理が遅いです。 Sub 色消() '成功 Dim 最終行 Dim 最終列 Dim 対象セル As Range 最終列 = Cells(8, Columns.Count).End(xlToLeft).Column '8行目の最終列を取得 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 For Each 対象セル In Range(Cells(10, 17), Cells(最終行, 最終列)) If 対象セル.Value = 0 Or 対象セル = "" Then 対象セル.Interior.ColorIndex = 0 End If Next 対象セル End Sub 対象範囲から対象セルを全部見つけて一括処理すれば早いのではと 以下のマクロを作成してみましたが Set 対象範囲 = Cells.Find(What:=0 Or "", LookIn:=xlValues, LookAt:=xlWhole) で構文ERRです。 どこを直せばいいのでしょうか? よろしくお願いします。 Sub 色消2() '2014/8/4 '失敗 Dim 対象範囲 Dim 最終行 Dim 最終列 最終列 = Cells(8, Columns.Count).End(xlToLeft).Column '8行目の最終列を取得 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 対象範囲 = Range(Cells(10, 17), Cells(最終行, 最終列)) Set 対象範囲 = Cells.Find(What:=0 Or "", LookIn:=xlValues, LookAt:=xlWhole) If Not 対象範囲 Is Nothing Then 対象範囲.Interior.ColorIndex = 0 End If End Sub

  • エクセルでセルの色を点滅させる方法について

    エクセル2013で作成した表の数値をある条件の元でセルの背景の色を点滅させる方法を教えてください。 条件  下記条件の元でカーソルの背景の色を点滅させる。     データ範囲は C4~F12     VBAでの使用でよいです。 空白は無色 0~99までは緑の点滅 100~199までは青の点滅 200~299までは黄色の点滅 300以上は赤の点滅 合計の欄は点滅対象外とする。 ※色付けは条件付き書式設定による色付けとフォントの塗りつぶしと2通りあります。 方法が違うなら別々に教えてください。

  • 特定のセルをフィルタするマクロを作りたい

    特定のキーワードが含まれるセルをフィルタするマクロを作りたいです。 使用環境はExcel2010です。 口頭ではわかりにくいので、画像を添付します。 添付画像のように、それぞれの人物名と点数が一覧になった表があります。 特定の名前の人で点数が一定以下の行をフィルターしたいのですが、毎回フィルターで名前を選ぶのが面倒なので、マクロの記録機能で下記のマクロを作成しました。 Selection.AutoFilter ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=2, Criteria1:="=鈴木", _ Operator:=xlOr, Criteria2:="=田中" ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=3, Criteria1:="<70", _ Operator:=xlAnd 上記のマクロで、「田中」と「鈴木」のみ、点数が70点に満たなかった行を抜き出しています。 しかし、他部署の人物も調査の対処に含めるため、E2:E7セルに調査したい対象の名前を入れ、自動的にセルに入力された名前でフィルタリングされるようにしたいです。 この際のマクロの記載方法を知りたいです。 *部署によって人数が異なるため、E2:E7セルに入力する名前がすべて埋まるとは限りません。 *実際の名前と点数は毎月新しいExcelブックで送られてくるので、フィルター用のExcelシートにコピーペーストで張り付けて使用予定です。 *記載されている名前や点数は例です。

  • コメント挿入マクロ挿入位置ずれの件

    コメント挿入マクロ挿入位置ずれの件 エクセル2007 ウインドウズ7利用 エクセルセル内の品番に対し別ファイルに保存してある同じ品番の画像をセルに挿入するマクロを組んで頂いたのですが品番を記載したセルからずれた所に画像が挿入されます。 挿入する画像が数百枚単位となりますので現在全画像を選択して移動するのも時間がかかってしまいます。品番が記載されたセルへ挿入する方法があれば教えていただけますでしょうか。 記 Sub 画像挿入() Dim 対象セル As Range For Each 対象セル In Selection If Dir("C:\画像\" & 対象セル.Value & ".jpg") <> "" Then '該当するファイルがあれば ActiveSheet.Pictures.Insert("C:\画像\" & 対象セル.Value & ".jpg").Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 対象セル.Height Selection.ShapeRange.Width = 対象セル.Width Selection.ShapeRange.IncrementLeft 対象セル.Left Selection.ShapeRange.IncrementTop 対象セル.Top End If Next 対象セル End Sub です。宜しく御願い致します。

専門家に質問してみよう