• 締切済み

エクセル バーの長さを調整

A列に数値が入った場合、その数値をもとにBセルの左端からグラフバーを描きたいと思っています。バーの長さを調節したいのですが、添付画像のようにBセルの左端を0として、500まではBセルに収まるように、500以上2000まではCセルに収まるようにしたいのですが、可能でしょうか。 可能であればやり方を教えてください。

みんなの回答

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

条件付き書式のデータバーを使うことをやってみたがうまく行かない。 (私のやり方が悪いのかも) ーー そこでVBAでやってみた。 >500まではBセルに収まるように の2段階に分ける事項は、時間がないのでやってないが、少し複雑にすればできそう。 A列のデータについて、B列に横棒グラフのようにバーを表示。 例データ Sheet1のA2:A7  に数値 234 345 542 123 54 636 ーー 標準moduleに Sub test01() ActiveSheet.DrawingObjects.Delete For i = 2 To 7 Set myDocument = Worksheets(1) l = Range("B" & i).Left + 2 t = Range("B" & i).Top w = Range("A" & i).Value / 10 h = Range("B" & i).Height - 4 myDocument.Shapes.AddShape msoShapeRectangle, l, t, w, h Next i End Sub (こんなにコード行数は少なくて済む内容) 実行。 VBAに関心なければ無視して。 2段階(=B,C列を使った)表示は、質問者が関心があれば後刻に上げます。

verify
質問者

お礼

ありがとうございます。さっくりとVBAを使える方が羨ましいです。私のようなプログラム素人には敷居が高くて。 ぜひ2~3段階をつかった表示の例も教えてください。 宜しくお願いします。

  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.2

図を見ると、B,C,D の列幅が違っていますが、こうしなければならないでしょうか。 B4~D4を連結します。 列幅を同じにしていいのなら、B4に次の数式を入れます。 =MIN(A4/500,1)+MAX(MIN((A4-500)/1500,1),0)+MAX((A4-2000)/6000,0) テータバーの最小値を数値の0、最大値を数値の3にします。 どうしても、BCDの列幅が違わせる必要があるなら、B4に次の数式を入れます。 =MIN(A5/500,1)*CELL("width",B2)+MAX(MIN((A5-500)/1500,1),0)*CELL("width",C2)+MAX((A5-2000)/6000,0)*CELL("width",D2) テータバーの最小値を数値の0、最大値を数式にして、次の数式を入れます。 =CELL("width",$B$1)+CELL("width",$C$1)+CELL("width",$D$1) 但し、これは若干の誤差が出ます。

verify
質問者

お礼

すごいですね。質問前にデータバーをいろいろいじってみたのですが挫折しました。詳しい人に聞くのが一番です。ありがとうございます。

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.1

横軸のスケールを対数にするならできましたがお望みのものは難しいですねー。

verify
質問者

お礼

ご検討くださりありがとうございました。

関連するQ&A