• ベストアンサー

エクセルマクロに詳しい方

すいません教えて下さい。  例えば、A1のセルに30、A2のセルに5 A3のセルに7 といった感じで数字があるとして どこかの列のある位置 を基準として 例えば C列の先頭から A1のセルにある 数字の分だけ色分けるマクロってどのようになるのでしょうか この場合 C1からC30までが黒 C31~35までは緑 といった具合にしたいのです。 A列に入る数字は必ずしも 一定ではありません。  できましたら、 マクロを簡単に書いて頂けると大変うれしいです。 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

同じくVBAで Sub Macro1() Dim val As Range, setCell As Range Dim colors(16), colorIndex Dim basePos, setPos, lines colors(0) = vbBlack colors(1) = vbGreen colors(2) = vbRed colors(3) = vbYellow colors(4) = vbBlue colors(5) = vbMagenta colors(6) = vbCyan colors(7) = vbWhite colors(8) = RGB(204, 255, 255) Set val = Range("A1") Set setCell = Range("C1") basePos = 0: setPos = 0: colorIndex = 0 Do While (val.Offset(basePos).Value <> "") lines = val.Offset(basePos).Value With Range(setCell.Offset(setPos), setCell.Offset(setPos + lines - 1)).Interior .color = colors(colorIndex) .Pattern = xlSolid End With colorIndex = colorIndex + 1 basePos = basePos + 1 setPos = setPos + lines Loop End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

もう既に回答は出ていますが、ご参考に。 Sub test01() Dim sh1 As Object c = Array("", 2, 3, 4, 5, 6) Set sh1 = Worksheets("Sheet1") b = Selection.Column d = sh1.Range("A65536").End(xlUp).Row f = 1   For i = 1 To d   a = sh1.Cells(i, "A")   sh1.Range(sh1.Cells(f, b), sh1.Cells(f + a -   1, b)).Interior.ColorIndex = c(i)   f = f + a   Next i End Sub シート名を修正してください。 色コード定義(Array)がA列の行数より 大かとか指定列が適当かなどのチェックは入れてません。 付け加えてください。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 VBAなら、こんな感じ。 Sub macro()   Dim i As Long   Dim cnt As Long   Dim temp As Long   Columns("C:C").Interior.ColorIndex = xlNone   cnt = 1   temp = Range("A1").Value   Cells(cnt, 3).Resize(temp).Interior.ColorIndex = 3   cnt = cnt + temp   temp = Range("A2").Value   Cells(cnt, 3).Resize(temp).Interior.ColorIndex = 41   cnt = cnt + temp   temp = Range("A3").Value   Cells(cnt, 3).Resize(temp).Interior.ColorIndex = 50 End Sub 色は適当です。 A列の数値データが多いなら、カラーインデックスを配列などに入れておいて、ループで廻してもいいでしょう。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

3色までなら条件付き書式でも出来そうですね。 C列を選択、「書式」「条件付き書式」で 条件1「数式が」「=ROW()<=$A$1」で書式で色を黒 条件2「数式が」「=ROW()<=SUM($A$1:$A$2)」で書式で色を緑 条件3「数式が」「=ROW()<=SUM($A$1:$A$3)」で書式で色を赤

関連するQ&A