dポイントプレゼントキャンペーン実施中!

A   B       ◎ $B2-$A2>=5 
1 原価  売価    〇 $B2-$A2>=3
2 95  ◎100    △ $B2-$A2>=1
3 88  △90     × $B2-$A2>=0


エクセル2010で、B列に数値を入力すると、隣のセルとの差額に応じて4種類の記号がつくように条件付き書式を設定しようとしたところ、アイコンセットでは相対参照はできないとエクセルさんにはじかれてしまいました。
そこで、マクロでも関数でもいいので、同一セルに視覚的にわかりやすい記号をくっつける術を伝授していただきたいです。
元々のシートの都合上、列の挿入はできないのがネックなのですが、可能でしょうか?

A 回答 (4件)

No.1・3です。



>一応ですが、適用箇所を替えるにはどこをどのように変えればよいか・・・

No.3のコード内の

>If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub

でA・B列以外または複数セルの変化は何もしない。

>If .Row > 1 Then

で変化セルが2行目以降の場合・・・

としているので、結局A・B列の2行目以降の変化にだけ対応します。
具体的な範囲が示されていないので、的確なお答えできませんが・・・

適応個所は
>Range("A:B")
の部分で変化させます。

この程度でごめんなさい。

※ 細かいエラー処理はしていません。
本来であれば入力が数値以外の場合等々のエラー処理をした方が良いと思います。m(_ _)m
    • good
    • 0

No.1です。



投稿後気づきました。
前回の場合はその都度マクロを実行する必要がありますので、
チェンジイベントの方が向いていると思います。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A・B列にデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row > 1 Then
If WorksheetFunction.Count(Cells(.Row, "A").Resize(, 2)) = 2 Then
Select Case Cells(.Row, "B") - Cells(.Row, "A")
Case Is < 0
Cells(.Row, "B").NumberFormatLocal = "G/標準"
Case Is >= 5
Cells(.Row, "B").NumberFormatLocal = "◎0"
Case Is >= 3
Cells(.Row, "B").NumberFormatLocal = "○0"
Case Is >= 1
Cells(.Row, "B").NumberFormatLocal = "△0"
Case Else
Cells(.Row, "B").NumberFormatLocal = "×0"
End Select
End If
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

素晴らしい回答ありがとうございます!
これで行けそうです!
一応ですが、適用箇所を替えるにはどこをどのように変えればよいか教えていただければ幸いです

お礼日時:2017/01/30 13:18

相対参照以外は問題ないということでよろしいですか?


相対参照にこだわるということは、コピーできないということでしょうか?
きちんとコピーペーストすれば反映されると思うのですが…
    • good
    • 0

こんばんは!



VBAでの一例です。
B列数値がA列数値以上の限定です。
計算できるようにセルの表示形式の操作にしてみました。

A・B列に入る数値は整数だとします。

Sub Sample1()
Dim i As Long
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "B") - Cells(i, "A") >= 0 Then
Select Case Cells(i, "B") - Cells(i, "A")
Case Is >= 5
Cells(i, "B").NumberFormatLocal = "◎0"
Case Is >= 3
Cells(i, "B").NumberFormatLocal = "○0"
Case Is >= 1
Cells(i, "B").NumberFormatLocal = "△0"
Case Else
Cells(i, "B").NumberFormatLocal = "×0"
End Select
End If
Next i
End Sub

こんな感じではどうでしょうか?

※ 細かいエラー処理はしていません。m(_ _)m
    • good
    • 0

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