- 締切済み
エクセル バーの長さを調整
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
条件付き書式のデータバーを使うことをやってみたがうまく行かない。 (私のやり方が悪いのかも) ーー そこで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列を使った)表示は、質問者が関心があれば後刻に上げます。
- SI299792
- ベストアンサー率47% (774/1620)
図を見ると、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) 但し、これは若干の誤差が出ます。
お礼
すごいですね。質問前にデータバーをいろいろいじってみたのですが挫折しました。詳しい人に聞くのが一番です。ありがとうございます。
- chachaboxx
- ベストアンサー率23% (412/1777)
お礼
ありがとうございます。さっくりとVBAを使える方が羨ましいです。私のようなプログラム素人には敷居が高くて。 ぜひ2~3段階をつかった表示の例も教えてください。 宜しくお願いします。