
はじめまして。マクロ初心者です。
よろしくお願いいたします。
エクセルに入力されている数値によってセルを色分けしたいのです。
数値はこんなふうに入力されています↓
A0*22*33*44
B1*22*33*44
A2*12*55*66 D1*77*22*88
C1*12*55*66 E2*99*12*11
こういったものが全部で1500行ほどです。
*は空白を表しています。
この中の、空白を入れて左から4つめの数字が2、5つめが2のときは赤、
左から4つめの数字が1、5つめの数字が2のときは青、
それ以外のときはそのまま…
といった具合に全部で5種類5色に色分けしたいのですが、どうにも能力が足りなくて困っています。
最初、自分なりにネット等参考にしながら「22という数値を含むセルは赤」といったように作ったのですが、
どうしても左から4文字目5文字目に限定しないと余計なセルにも色が付いてしまうのです。
もう2日も悩んでいますが、どうにも手も足も出ません。
ご指導いただけると本当に助かります。
どうぞよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
>こういったものが全部で1500行ほどです。
>*は空白を表しています。
間の空白が、半角であり、空白は1つであるという確約はないと思うのですね。
1500行で、数多くある場合は、そういうことを想定しないといけないような気がします。
私のコードの考え方は、空白で仕切られた4つの塊の文字列の2番目が、何であるかを検索しています。
確実に、その場所にあるというなら、
For Each c In rng で、
If Mid(c.Value, 4, 2) = 22 Then とすればよいです。
なお、色は、塗りつぶすなら、Interior の場合は、パステルカラー。Font なら、原色がよいです。
-----------------------------------------------
'Case のところに、数値と色を加えてください。
Sub TestMacro1()
Dim rng As Range
Dim c As Range
Dim buf As Variant
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
Application.ScreenUpdating = False
rng.Interior.ColorIndex = xlNone
For Each c In rng.Cells
'全角スペースを半角にする
buf = Replace(Trim(c.Value), Space(1), Space(1), , , 1)
'スペースが2個以上入ったものをひとつにする
Do While InStr(1, buf, Space(2), 1) > 0
buf = Replace(buf, Space(2), Space(1), , , vbTextCompare)
Loop
If UBound(Split(buf, Space(1))) > 0 Then
buf = Split(buf, Space(1))
'数値を探す(ここに入れる)
Select Case Val(buf(1))
Case 22: c.Interior.ColorIndex = 3 '赤(3), ローズ(38)-パステルカラー
Case 12: c.Interior.ColorIndex = 5 '青(5), 水色(34)-パステルカラー
End Select
End If
buf = Empty
Next c
Application.ScreenUpdating = True
End Sub
はじめまして。
ありがとうございます!
びっくりしました。すごいです。
空白が一つとは限らないですよね、確かに。
全角を半角にしたり、空白が二つ以上のときにひとつにしたり、
きめ細かい内容で本当に感謝します。
パステルカラーの件も、確かにおっしゃる通りです。
見る人への思いやりですね。
内容はまだまだ初心者の私には、見ても理解できないところがあるのですが、本を見ながら一つずつ理解してみます。
本当に助かりました。
どうもありがとうございました。
No.2
- 回答日時:
こんなのではどうでしょうか?
データがあるのがSheet1だった場合です。
Sub sample()
Dim target As Range
Dim r As Range
Set target = Sheets("Sheet1").UsedRange
For Each r In target
If r <> "" Then
'とりあえず、色=自動の戻す
r.Font.ColorIndex = xlAutomatic
'空白を入れて左から4つめの数字が2、5つめが2のときは赤
If (Mid(r, 4, 1) = "2") And (Mid(r, 5, 1) = "2") Then
r.Font.ColorIndex = 3
End If
'左から4つめの数字が1、5つめの数字が2のときは青
If (Mid(r, 4, 1) = "1") And (Mid(r, 5, 1) = "2") Then
r.Font.ColorIndex = 5
End If
'必要に応じて条件を追加
End If
Next
End Sub
はじめまして。
ありがとうございます。
こうして書くのですね!!
本当に勉強になります。
これだと、4~5文字目のひとつが変わったときでも
簡単に変えられるのですね。
ありがとうございました。
No.1
- 回答日時:
1)現在作っているコードを貼り付けてもらえると、回答しやすいです。
2)質問文だけでは、5つの条件そのものがわからないので、5種類の条件をすべて教えてください。その際に5つの条件の優先順位も教えて下さい。
この回答への補足
はじめまして。
1)現在作っているコード↓
Sub Color()
Dim c
For Each c In Range("A1:E1500")
If InStr(c.Value,"12") > 0 Then
c.Interior.ColorIndex = 3
End If
Next c
End sub
こんな感じです。
本当に初心者なので、たどたどしいです。
2)5つの条件:すべて同じです。4~5文字目に限定するということ、
順番は特に関係なく、ただただ色分けができればいいというものです。
色も指示されていません。
4~5文字目は、12,22,30,44,60です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
IF関数で空欄("")の時、Null...
-
Excel > ピボットテーブル「(空...
-
エクセルでCSVを編集するとき、...
-
ピボットテーブルで空白セルの...
-
エクセルで入力すると隣のセル...
-
Excel:関数が入っているセルに...
-
エクセル 連番が途切れていると...
-
空白セル内の数式を残したまま...
-
関数TRANSPOSEで空白セルを0に...
-
【エクセル】VLOOKUP関数入れた...
-
数式による空白を無視して最終...
-
Excelで、入力文字の後に自動で...
-
「データ要素を線で結ぶ」がチ...
-
形式貼り付けの「空白を無視す...
-
【Excel】 csvの作成時、空白セ...
-
エクセルのクエリで外部データ...
-
excel2010 空白セルにのみ貼り...
-
空白セルに斜線(罫線)
-
エクセル セルのコピー元が空...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
空白セルに斜線(罫線)
-
Excel > ピボットテーブル「(空...
-
Excelで、入力文字の後に自動で...
-
エクセル 連番が途切れていると...
-
ピボットテーブルで空白セルの...
-
「データ要素を線で結ぶ」がチ...
-
Excel:関数が入っているセルに...
-
数式による空白を無視して最終...
-
空白セル内の数式を残したまま...
-
excel2010 空白セルにのみ貼り...
-
【Excel】 csvの作成時、空白セ...
-
エクセルで上の行の値を自動的...
-
エクセルのIF関数で、隣のセル...
-
エクセルで、「複数のセルの中...
-
形式貼り付けの「空白を無視す...
-
関数TRANSPOSEで空白セルを0に...
-
【Excel】 Ctrl+方向キー で空...
-
色つき行の一括削除は?
おすすめ情報