• ベストアンサー

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

すいません教えて下さい。  例えば、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/17068)
回答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% (7418/18948)
回答No.1

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

関連するQ&A

  • 【エクセル】マクロ

    すみません。 エクセルのマクロのプログラム教えてください。 セルA1~A30に 「1」~「5」のいずれかの数字が 入っています。 そのA列の数字をもとにB1~B30のセルの書式を 変えたいと思っています。 例えば、「1」なら赤色、「2」なら青色、「3」なら緑色・・・ となるように考えています。 for文で1~30まで繰り返し、if文とswitch文で実行すると 思うのですが、どのようなプログラムを書けばいいですか? よろしくお願いします。 3種類なら条件式書式が使えるのですが、4種類以上だと使えないので マクロで実行しようと思っています。

  • エクセルについて。

    エクセルでお願いします。xpを使用しています。A1からA3までを白、A4からA6までを黒という具合に、 白、黒、赤、青、黄、緑、オレンジ、ピンクと8つの色を付け、次の列のB1からB3までのどれかに数字を入れて、それをまた各色ごとに同じように数字を入れ、その数字の小さい(若い?)順に色を並べかえ、C列に表示させる事は可能でしょうか?

  • Excelのマクロ教えてください

    初めまして。 以下のようなマクロが欲しいのですが、知識不足のため、どうしたらよのかわからず困っております。 ウェブで色々と調べてやってみましたが、期待どおりの結果を得られませんでした。 どなたかお教えいただけたら幸いです。 行いたいのは、例えば、   セルA1に文字列『1. abc』が入っているとき、先頭の番号『1』の部分だけ取り出し   (または . 以下を除いて)、セルA1の内容を数字型の『1』に書き換える という動作です。 複数のセルをドラッグして選択し、マクロのショートカットで一発変換 できたら…と思っております。 変換したい部分のセルの内容はすべて、『1. abc』のように、文字列で 「1~7の数字」、「半角の.」、「半角スペース」、「英単語」 の順になっています。 簡単なことなのかもしれませんが、自分にはさっぱりでした… どなたか回答をお願いいたします。m(_ _)m

  • エクセルかマクロで・・・

    エクセル関数かマクロで作りたいのですが、   A列に数字B列に個数を入力していくとします。   A列の数字をB列の個数分だけC列に表示したいのです。  例えばA1に300、B1に5、A2に500、B2に6と入力した場合、   C1からC5に300、C6からC11に500、と表示するにはどうしたらよい  でしょうか。 よろしくお願いいたします。

  • EXCELで

    (1)関数を用いて表した表で、ある一定の規定の数字に満たない数字を自動で赤く表示させる方法はありますか?と、出来る事なら自動で太字にもしたいです。 ex)選択した列で10に満たない数字は全て赤い色に (1)上記の応用で、規定の数字はあるものの一定ではなく変動するものの場合でも可能ですか? ex)列毎に規定の数字が変わる。   Aなら1  Bなら3  Cなら20            という具合に A   1    3  ←黒のまま     B   3    1  ←赤に変わる C   20    5  ←赤に変わる D   8    9  ←黒のまま E   7    4  ←赤に変わる

  • EXCELに詳しい方

    EXCELに詳しい方、以下2点わかりましたら宜しくお願いします (1)セルA1に「食費」「交際費」と記載すると セルB1に記載されていたものが消える(空欄にする)ようにするにはどうすればいいでしょうか? セルB1に直接数字を入力したく関数を入れてしまうと数式が上書きされて消えてしまうので 関数ではない設定で方法はありますか? 条件付き書式でできるかな、と思いましたが設定できるのは書式だけで セルに入力していたものを消すことは不可能ですよね・・? (2)A1にアルファベットと数字の文字、C1には数字があるときに B1に1から連続した数字を自動的に割り振られるようにしたいです つまり A列   B列   C列 JKL456  1  3000       2   4003       3   5456       4   5894 S56D  1    8111       2   4512       3   6812 SJN2  1      5812       2   4213 ポイント A列とC列に入力されたときB列が1になる C列に入力されているとき上の1から連続した数字をもってくる A列とC列は自分で入力するがB列は自動で数字が入るようにしたい できたらマクロを使わないで設定できたらいいですが マクロを使わないとできないようであれば そのやり方も教えてください。 宜しくお願い致します。

  • 度々エクセルマクロで質問です

    前回は皆様有り難うございました。 度々で申し訳ございません。 前回、エクセルマクロで、仮に 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・・・・・ というマクロを教えて頂きました。 この状態ではA列の数字の分だけ、C列のセルを色分け できる訳ですが、この色分けと同じ範囲のセルをD・E 列にて罫線を引きたいのですが(範囲内すべてのセルの下線及びE列のセルの右側に縦線)このマクロにどのような マクロを追加すべきなのでしょうか? 変な質問ですみません。 初心者なので教えて下さい。

  • マクロで色の設定がしたいのですが・・・

    こんにちは。 マクロで色の設定をしたいのですが、どうにもうまくいきません。 やりたいことは Sheet1に3×3の9つのセルを設定する Sheet2のA列に9行の枠を作る あらかじめ1は黒、2は灰色、3は・・・と1~15まで15色の色設定をしておく Sheet2の枠内に1~15の数字を入力したときに、Sheet1の9つのセル内の色が変わるようにしたいのです。 また、Sheet2のA1~A9がSheet1では3×3のセル設定なので 縦方向でも横方向でも進む順番は構わないのですが、 例えばSheet2:A1~A3=Sheet1:A1~A3、Sheet2:A4~A6=Sheet1:B1~B3、Sheet2:A7~A9=Sheet1:C1~C3と設定することは可能ですか? 現段階では、シート内でセルに直接数字を打ち込むと入力されたセルの色が変わるまでは出来たのですが、反映させることが出来ません。 宜しくお願い致します。

  • エクセルのマクロについて教えてください

    エクセルで、その行の中に赤色のセルがある場合は、その行のA列のセルに"○"を入れるというのは、マクロで書く場合はどのように書けばよいでしょうか。 行は1~100まで、列はA~Zまであります。赤色のセルはB列~Z列の所々に点在します。

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

専門家に質問してみよう