アプリ版:「スタンプのみでお礼する」機能のリリースについて

宜しくお願いします。Excel色づけでs列とw列に数字があり、0含む以上は黄色、-1から-50は青、-50以下は赤で塗りたいのですが、宜しくお願いします。

質問者からの補足コメント

  • すいません。マクロで宜しくお願いします。言葉足りずですいません

      補足日時:2017/11/06 21:27
  • ご回答ありがとうございます。遅くなりすみません。自分は、Excel2013使っていて、上手く出来ました。しかし会社のパソコンExcelいくつか確認しませんでしたが、デバッグが出てPrivate Sub iro・・・の行がコンパイルエラーが出ました。何か考えられる原因ありますか?宜しくお願いします。

      補足日時:2017/11/13 19:13
  • ご回答ありがとうございます。すいません。自分がExcel2016で会社が2013でした

    「宜しくお願いします。Excel色づけでs」の補足画像3
      補足日時:2017/11/15 10:29

A 回答 (5件)

画像をみるとマクロがきちんと張り付けられていないように見えます。


(途中で切れているように見えます)

提示したマクロをきちんと張り付けなおして、再度実行してみてください。
また、張り付けたマクロの後に、余分なマクロなど書き込まないようにしてください。
    • good
    • 0
この回答へのお礼

tatsu99さんでしょうか?ベストアンサーのあなたに、再質問出来るのか、やってみてるのですが、確認させて下さい。前回教えてもらった色づけSとW列数値0以上だったら黄色-50未満なら青以上なら赤での色づけで、列をWとAAに変えてみたらデバッグが出てしまいました。どこが悪いのか教えてください。写真では、-50が-10になってたりしますが、ここはアドリブで使ったりしてるので、気にしないで下さい。宜しくお願いします。

お礼日時:2017/12/05 12:23

>しかし会社のパソコンExcelいくつか確認しませんでしたが、デバッグが出てPrivate Sub iro・・・の行がコンパイルエラーが出ました。


>何か考えられる原因ありますか?宜しくお願いします。

会社のパソコンのexcelのバージョンは何でしょうか。
デバッグ画面が出たとき、どのようなエラーメッセージが表示されましたか。(正確なメッセージを提示ください)
上記の2つが判れば、原因がわかるかも知れません。
    • good
    • 0

以下のマクロを標準モジュールに登録してください。


そして、マクロ「色付け」を選択し、実行してください。
色付けを行いたいシートを表示してから、実行してください。(マクロは現在表示されているシートに対して色付けを行います)
---------------------------------------------------
Option Explicit
Public Sub 色付け()
Call iro("S")
Call iro("W")
MsgBox ("完了")
End Sub
'1列の色付け
Private Sub iro(ByVal col As String)
Dim maxrow As Long
Dim row As Long
Dim val As Variant
Columns(col & ":" & col).Select
Selection.Interior.Pattern = xlNone
maxrow = Cells(Rows.Count, col).End(xlUp).row
For row = 1 To maxrow
val = Cells(row, col).Value
If IsNumeric(val) = True And val <> "" Then
If val >= 0 Then
'0以上の場合、黄色
Cells(row, col).Interior.Color = 65535
ElseIf val < -50 Then
'-50より小さい場合は、赤色
Cells(row, col).Interior.Color = 255
Else
'-1~-50の場合は、青色
Cells(row, col).Interior.Color = 12611584
End If
End If
Next
End Sub
    • good
    • 0

No.1です。



>マクロで宜しくお願いします。

条件付き書式ではダメなのですね?

シートモジュールにしてください。
当然のコトですが、条件付き書式を設定している場合は解除してください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Intersect(Target, Range("S:S,W:W")) Is Nothing Then Exit Sub
If Target.Count > 1000 Then Exit Sub
For Each c In Target
If c <> "" And IsNumeric(c) Then
Select Case c
Case Is >= 0
c.Interior.ColorIndex = 6
Case Is < -50
c.Interior.ColorIndex = 3
Case Else
c.Interior.ColorIndex = 28 '//←水色//
End Select
Else
c.Interior.ColorIndex = xlNone
End If
Next c
End Sub

※ 「青」にしてしまうと文字が見えにくくなると思うので
「水色」にしています。

※ 複数セルのデータ消去もあると思いますので、
敢えて、1セルのみの動作にしていません。

※ データ消去の時、極端に広範囲(列全体など)を範囲指定してしまうと
「応答なし」の状態になると思いますので、
敢えて1000セル程度限定としています。m(_ _)m
    • good
    • 1

こんばんは!



「-50」の場合はどちらに入るのでしょうか?
青ですか?赤ですか?
以上・以下・~より大きい・~より小さい(未満)といった文言は正確に使う必要があります。

とりあえず「-50」は「青」とします。
S・W列に入るのは数値だという前提です。

条件付き書式を三つ設定します。
Ctrlキーを押しながらS列とW列をすべて範囲指定 → 条件付き書式 → ここで三つの条件付き書式の設定
気を付けなければならないのは 空白セル=0 と見なされますので、「黄色」は注意が必要です。

① 「黄色」の設定
条件付き書式 → 新しいルール → 数式を使用して・・・ → 数式欄に
=AND(S1<>"",S1>=0)
という数式を入れ → 書式 → 塗りつぶしタブ → 「黄色」を選択しOK

② 「青色」の設定
条件付き書式 → ・・・中略・・・ → 数式欄に
=AND(S1>=-50,S1<0)
という数式を入れ → 書式 → ・・・「青」を選択しOK

③ 「赤色」の設定
条件付き書式 → セルの強調表示ルール → 指定の値より小さい → -50 と入力
→ 書式の右側▼をクリック → ユーザー設定の書式 → 塗りつぶしタブから「赤」を選択しOK

これで大丈夫だと思います。

※ 万一1行目が項目行で文字列になっている場合は「黄色」になります。
その場合はCtrlキーを押しながら両列2行目以降の色を付けたいセルを範囲指定し、
数式の「S1」の部分を「S2」に変更してください。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!