![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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.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
No.3
- 回答日時:
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
素晴らしい回答ありがとうございます!
これで行けそうです!
一応ですが、適用箇所を替えるにはどこをどのように変えればよいか教えていただければ幸いです
No.2
- 回答日時:
相対参照以外は問題ないということでよろしいですか?
相対参照にこだわるということは、コピーできないということでしょうか?
きちんとコピーペーストすれば反映されると思うのですが…
No.1
- 回答日時:
こんばんは!
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) エクセルの条件付き書式 3 2022/05/08 03:17
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Visual Basic(VBA) エクセル関数のことで質問です。 別シートセルから値をもってくるように関数を設定しているときに、 別シ 3 2023/01/31 14:10
- Excel(エクセル) excelのindirect関数の別ブック参照について質問です。 1 2022/06/03 15:17
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
ある列のセルに特定の文字が入...
-
Excelで中央揃えが出来ない?
-
エクセルで特定の文字が入って...
-
エクセルの関数
-
桁の違う数値での並び替え
-
セル内文章から、英数字のみ取...
-
エクセルのまとめてカッコをつ...
-
Excelでグループの最大値から項...
-
Excel 頭に「0」がついている...
-
連続データを1行おきに貼り付け...
-
Excelの結合でA列とB列の内容...
-
【EXCEL】別シートに同じ番号が...
-
Excel 指定行までコピーをおこ...
-
INDIRECTの列を可変にしたい
-
WEEKDAY 空白も7になってしまう
-
Excel強制終了
-
エクセルに入力した文字列に句...
-
Excelで%表示を全角にしたいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
Excelで中央揃えが出来ない?
-
ある列のセルに特定の文字が入...
-
エクセルで特定の文字が入って...
-
エクセルのまとめてカッコをつ...
-
Excel 頭に「0」がついている...
-
桁の違う数値での並び替え
-
セル内文章から、英数字のみ取...
-
Excel 指定行までコピーをおこ...
-
エクセルの関数
-
excelで、1つのセルに入ってい...
-
エクセルに入力した文字列に句...
-
エクセルで、数字列の中にハイ...
-
WEEKDAY 空白も7になってしまう
-
Excelでグループの最大値から項...
-
Excel2013 カラースケールを別...
-
連続データを1行おきに貼り付け...
-
【エクセル】2行に一行のように...
-
Excel強制終了
おすすめ情報