エクセルのVBAを用いてプログラムを書いているのですが、どうしてもわからないことがあるので教えて下さい。
あるデータの時間経過(推移)の折れ線グラフを自動的にチャートシートに作図させたのですが、X軸に日付の目盛りを表示させ忘れてしまい、X軸に日付の目盛りを表示させるようにマクロを記録し、それを基に手直しをして追加プログラムを書いているのですがうまく行きません。というのは、X軸に日付の目盛りを表示させることはできたのですが、それに伴い、チャートの形が変わってしまうのです。グラフの種類は折れ線でサインカーブの様なスムーズな線が角張ったゴツゴツした感じの線になってしまいます。これってバグでしょうか?
具体的なプログラムは、Range(cells(50, 2), cells(150, 5))のデータでグラフを作成し、その後、Range(cells(50, 1), cells(150,1))の日付データをX軸に設定するといった感じで組んでいます。グラフの表示形式を変えずに、X軸の目盛りラベルのみを変更(表示)させるにはどのようにすれば良いでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (4件)

> 「AxisクラスのMinimumScaleプロパティを設定できません」


一つ、重大な過ちに気づきました(汗)。「折れ線グラフ」で描かれている
ということを見落としていました。申し訳ありません。
もし、問題なければ、X軸のサンプル間隔に制限のない「散布図」を使われては
いかがでしょう?。スムーズな線がゴツゴツになってしまう例として、X軸系列
の増分が一定でないことが考えられます。
回答No.3に示したマクロの
For Each Chart In .Charts
の下に
Chart.ChartType = xlXYScatter
With Chart.SeriesCollection(1)
.Border.Weight = xlHairline
.Smooth = True
End With
の5行追加していただければOKです。

なお、「折れ線グラフのままにしたい」ということでしたら、
次のように書き直してください。

Sub Macro2()
With ActiveWorkbook
Set stTime = Sheets("Sheet1").Cells(2, 1) 'x軸の最小値
Set edTime = Sheets("Sheet1").Cells(38, 1) 'x軸の最大値
n = edTime.Row - stTime.Row 'x軸の幅n
For Each Chart In .Charts
With Chart.Axes(xlCategory)
.TickLabelSpacing = n / 10 '目盛ラベルにnの10分割を入れる
.TickMarkSpacing = n / 10
End With
Next Chart
End With
Set stTime = Nothing
Set edTime = Nothing
End Sub

なお、シート保護がかかった状態でも同様のエラーメッセージが出ます。
-いずれもEXCEL2000にて動作確認-
    • good
    • 0
この回答へのお礼

毎度、ありがとうございます。
今晩また試してみます。
スムーズな線がゴツゴツになってしまう例として、X軸系列
の増分が一定でないことが考えられます。
確かに、祝日、土日のデータが抜けているので、それが
原因かも知れません。

お礼日時:2001/05/15 12:55

誤解ですか?失礼しました(^^;)。

For each - nextステートメントのご指摘ありがとうございます。早速以下の通り訂補してみましたがいかがでしょう?
Sub Macro1()
With ActiveWorkbook
Set stTime = Sheets("Sheet1").Cells(50, 1) 'x軸の最小値
Set edTime = Sheets("Sheet1").Cells(150, 1) 'x軸の最大値
n = edTime.Value - stTime.Value 'x軸の幅n
For Each Chart In .Charts
With Chart.Axes(xlCategory)
.MinimumScale = stTime.Value
.MaximumScale = edTime.Value
.MajorUnit = n / 10 '目盛りにnの10分割を入れる
End With
Next Chart
End With
Set stTime = Nothing
Set edTime = Nothing
End Sub
    • good
    • 0
この回答へのお礼

TTakさん、
昨日ご回答頂いたサンプルコードをコピーして試したところ、
.MinimumScale = stTime.Value のところでエラーが発生してしまいます。
.MaximumScale = edTime.Value のところでもエラーが発生すると考えられます。最初は変数もしくはコーディングの間違えと思い色々と検討してみましたが結局駄目でした。デバッグで変数の値をチェックしてみるとstTime,edTimeともにcells(50,1), cells(150,1)の値が入っていることは確認しました。エラーメッセージは次のようなダイアログが表示されました。
「AxisクラスのMinimumScaleプロパティを設定できません」
何か心当たりはありますか?
MajorUnit = n / 10 は、なかなかわかりやすかったです。

お礼日時:2001/05/15 09:28

> チャートシートでも同様に設定可能でしょうか


チャートシートとはグラフシートのことと察しますが、同様に設定可能です
また、完全に処理を自動化するならば、速度を考慮して、activateメソッド
を使わない方がいいでしょう。

> 目盛り間隔(例えば10個)を同時に設定するにはどのようなコードを入れれば良いのでしょうか?

これはグラフシートが複数あって、X軸を一気に同じ設定にしたいということ
ですね。私が思いつくのは、Chartsオブジェクト(グラフシート)の個数を
数えて、Chartsコレクションオブジェクトのインデクスに順々に値を入れて、
X軸を設定していく方法です。

Sub Macro1()
With ActiveWorkbook
For I = 1 To .Charts.Count
With .Charts(I).Axes(xlCategory)
.MinimumScale = Sheets("Sheet1").Cells(50, 1).Value
.MaximumScale = Sheets("Sheet1").Cells(150, 1).Value
End With
Next I
End With
End Sub

-EXCEL2000にて動作確認済み-

この回答への補足

私の質問の仕方が悪い様で、誤解されたと思います。
X軸の最小値(例えば0)、最大値(例えば100)の設定に加え、目盛り間隔を10にして10個の目盛りラベルをふるということです。目盛り間隔を5にした時は20個の目盛りラベルをふることになります。この様な設定を軸の設定と同様にコーディングしたいということです。
PS、Activate methodは遅いのですか?、今後、極力使用しない様に心がけます。
参考になりました。今回の回答頂いたFor - nextのループ処理をFor each - nextステートメントに変えると処理時間の短縮につながると思います(全ての対象オブジェクトに対してループ処理を行う場合)。

補足日時:2001/05/14 18:02
    • good
    • 0

mygskさんこんにちは


グラフの名前を"グラフ 1"とすると次のコードになります。

With ActiveSheet.ChartObjects("グラフ 1").Chart.Axes(xlCategory)
.MinimumScale = Cells(50, 1).Value
.MaximumScale = Cells(150, 1).Value
End With

グラフの名前は、グラフをオブジェクトとして選択した際に、名前ボックスに表示されます。デフォルトでは、作った順番に"グラフ 1",2,3...となります。
-EXCEL2000にて動作確認済み-
    • good
    • 0
この回答へのお礼

TTakさん、ありがとうございます。
とりあえず試してみます。
埋め込みグラフではなく、チャートシートでも同様に設定可能でしょうか
例えば、アクティブなチャートを指定してからです。
Charts(str_sheet_Name(i)).activate
With ActiveChats(1)
.chart.Axes(xlcategory).minimumScale=cells(50,1).value
.chart.Axes(xlcategory).maximumScale=cells(150,1).value
End with
この場合、TTakさんの例で言うとstr_sheet_Name(i) = "グラフ1"になります
また、目盛り間隔(例えば10個)を同時に設定するにはどのようなコードを入れれば良いのでしょうか?

お礼日時:2001/05/14 16:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qダイヤモンドの硬さがなぜできる?

 ダイヤモンドは硬度10で、地球上で一番硬いということですが、それについて質問です。
 ダイヤモンド以外はダイヤモンドよりも硬くないわけですが、ダイヤモンドよりも硬度の低い物(やわらかい物)でいくら圧力を加えても、炭素が硬度10にはならないと思うのです。
 なぜ硬度10の硬さができるのでしょうか?

Aベストアンサー

ダイヤモンドは高圧で固められているから硬いというわけではなく、高圧によって、化学構造が変化して、硬い物質(ダイヤモンド)に変化したと考えるべきです。
たとえばグラファイトを高圧にしても、化学構造が変化しなければ、ダイヤモンドのように硬くはなりません。

ダイヤモンドが硬い理由は結晶全体が強固な共有結合で、三次元的につながっているためであると説明されます。

このような構造はダイヤモンドを構成している炭素原子の特性とも関係してきます。
炭素以外の原子でこのような構造を作ることができるものは限られているために、ダイヤモンドよりも硬い物質が(あるのかもしれませんが)知られていないということだと思います。

参考URL:http://www2.yamamura.ac.jp/chemistry//chapter4/lecture5/lect4052.html

QZedGraphのグラフ作成時のX軸日付

VB.NET 2008、ZedGraphを使って、
グラフを作成しています。
普通の折れ線グラフを作成しているのですが、
X軸の日付 例えば10月8日が8.10と表示されてしまいます。
希望としては10/8としたいのですが。

データタイプは
myPane.XAxis.Type = AxisType.DateAsOrdinal

Xのデータは下記のような感じで書いています。
for i=0 to 10
 aaa(i)=日付情報
 X=aaa(i).ToOADate
 Y=・・・
 list.Add( X, Y );
Next i

わかる方がおられましたら、助言をお願いします。

Aベストアンサー

myPane.XAxis.Scale.Format = "M/d"
を加えてみてはどうでしょうか?

詳しくは下のURLを参照してみて下さい。

参考URL:http://www.zedgraph.org/wiki/index.php?title=Customize_the_scale_format

Qグラフのプロパティ(名前?)について

エクセルで作成されたグラフには[Book1]Sheet1グラフ1・グラフ2・グラフ3・・・と名前が作成した順についていきますが、この名前を任意に変更することは出来ないのでしょうか。
例えば、1番目に作ったグラフをグラフ3に、2番目に作ったグラフをグラフ1に・・・といったようにグラフを作ってしまった後から変更したいのですが可能でしょうか?
どなたかご存じの方がいらっしゃいましたら、ぜひ、ご教授ください。

Aベストアンサー

Sub グラフ名取得マクロ()
Dim cn As String
Dim i, k As Integer

i = 1
k = 1

cn = ActiveChart.Name
ActiveWorkbook.ActiveSheet.Cells(i,k).Activate
Cells(i, k).Value = cn
End Sub

簡単にですが・・・。
iとkには任意の数字(i=行数、k=列数)を入れて、グラフを選択している状態で実行してください。
グラフを選択していないとエラーですよ。簡単に、なのですみません・・・。

QRange("A" & x) + Range("A" & x+1) +

Range("A" & x) + Range("A" & x+1) + Range("A" & x+2) + ・・・ + Range("A" & x+n)

x:変数(基準点)
n:定数(A列のセルをいくつ足し併せるか、を指定。)


上記プログラムをループ的に行うには、どういう書き方をすれば良いでしょうか?
Do ~ Loop 文 などを使うのでしょうか。

お詳しい方、教えて下さい。
必ずお返事致します。

Aベストアンサー

>上記プログラムをループ的に行うには、どういう書き方をすれば良いでしょうか?
>Do ~ Loop 文 などを使うのでしょうか。
との質問には、#1のuruzさんが言われているように、For Nextが適していると思います。

ただ回す考え自体を除外してもよいのであれば、Sum関数を利用した方が、エリアが広い時は高速に処理を行う事が出来ます。


Option Explicit

Private Const x As Long = 1
Private Const N定数 As Long = 65535

Sub Test()
  Dim dbl1 As Double
  Dim dbl2 As Double
  Dim cur結果

  '----------------
  ' 検証1(回す)
  '----------------
  dbl1 = Now
  cur結果 = サンプル1(N定数)
  dbl2 = Now
  MsgBox "サンプル1(回す):" & cur結果 & vbTab & "計測時間" & dbl2 - dbl1

  '----------------
  ' 検証2(Sum)
  '----------------
  dbl1 = Now
  cur結果 = サンプル2(N定数)
  dbl2 = Now
  MsgBox "サンプル2(Sum):" & cur結果 & vbTab & "計測時間" & dbl2 - dbl1
End Sub

Function サンプル1(n As Long) As Currency
  Dim i As Long
  For i = 0 To n
    サンプル1 = サンプル1 + Range("A" & x + i)
  Next i
End Function

Function サンプル2(n As Long) As Currency
  Dim rng始点 As Range
  Dim rng終点 As Range
  Dim rng範囲 As Range
  
  Set rng始点 = Range("A" & x)
  Set rng終点 = rng始点.Offset(n)
  
  Set rng範囲 = Range(rng始点, rng終点)
  サンプル2 = WorksheetFunction.Sum(rng範囲)
End Function

>上記プログラムをループ的に行うには、どういう書き方をすれば良いでしょうか?
>Do ~ Loop 文 などを使うのでしょうか。
との質問には、#1のuruzさんが言われているように、For Nextが適していると思います。

ただ回す考え自体を除外してもよいのであれば、Sum関数を利用した方が、エリアが広い時は高速に処理を行う事が出来ます。


Option Explicit

Private Const x As Long = 1
Private Const N定数 As Long = 65535

Sub Test()
  Dim dbl1 As Double
  Dim dbl2 As Double
  Dim cur結果

  '...続きを読む

Qエクセルのグラフ作成時に、複合グラフになり困っています。

エクセルのグラフ作成時、データの範囲選択後、グラフウィザードの1/4で、標準グラフ(棒グラフ)などが作成できません。「現在のグラフは、複合グラフであり、利用できるグラフの種類と一致しません」と右下にでます。前回エクセルで複合グラフを作ったときに、何か設定を変えてしまったのでしょうか?  どなたか、教えてください。

Aベストアンサー

> 現在のグラフは、複合グラフであり、利用できるグラフの種類と一致しません

「標準のグラフ」に設定したのではないでしょうか?
このメッセージが出たとしてもグラフの種類で好きなグラフをクリックすれば選べると思いますが、、、、

標準のグラフをデフォルトにしたいなら下記で。
(Excel2000でのやり方なので他のバージョンだと多少違うかも)

1)一度、複合グラフを作ってから、グラフを選択して右クリック-「グラフの種類」
2)「ユーザー設定」タブで「選択元」を「ユーザー定義」
3)グラフの種類から「標準」を選択し下にある削除ボタンを押下

Q「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現在のセル( n , "A" )より14行上に数値がないことを確認するために
'14行上のセルを全て足し算しています。
For m = n - 14 To n - 1
s = s + Worksheets("Sheet1").Cells(m, "A").Value
Next

'足し算結果がゼロならば何も記入していないと判断し、
'数字の「1」を記入します。
If s >= 1 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 0
ElseIf s = 0 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 1
End If
End Sub

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現...続きを読む

Aベストアンサー

はいはい了解。

今着目しているセルが (n,1)であるとする。

条件: 今いるところから上に14行サーチして、一度でも1か2の値が見つかったら
     回答を0とする。14行すべてに1・2の値がひとつも含まれていなければ1とする。



Ans = 1

for i = 1 to 14

x = cells ( n - i , 1 ).value

if x = 1 or x = 2
then
Ans = 0
endif
next i


cells ( n , 1 ) = Ans


デフォルトの回答値=1としておき、一回でも条件にヒットしたら回答値=0にする。
ヒットしたらfor~nextを強制的に閉じてもいいけど、面倒なのでそのまま14回検索する。

Qウェブサイトにグラフの比較表を作りたい。

自分のウェブサイトに折れ線グラフを比較する表を作りたいと思っております。

イメージとしては左側にグラフA、グラフB、グラフC・・・とたくさんのボタンが縦にあって
その右側にその折れ線グラフを表示するウィンドウがあります。
グラフのボタンを押すとそのグラフが表示されたり非表示になったりして複数のグラフを比較することができる。
そういったグラフ比較表を作りたいのですが、どのように作ればよいのかが分かりません。

HTMLの本を読んでみましたが、どうやらそれでは作れなそうだと判りました。
Flashというものを勉強すれば作れるようになるでしょうか?

是非アドバイスをいただけたらありがたいです。

Aベストアンサー

>グラフのボタンを押すとそのグラフが表示されたり非表示になったりして複数のグラフを比較することができる。
 単純に、表示されるグラフが変わるだけですよね。複数のグラフを並べるので゛はなく!!

 なら普通に目次と内容を書けばよいだけですが?
<section>
 <h2>グラフ色々</h2>
 <section id="g1">
  <h2>グラフ1</h2>
  <p><img src="" width="" height="" alt=""></p>
 </section>
 <section id="g2">
  <h2>グラフ2</h2>
  <p><img src="" width="" height="" alt=""></p>
 </section>
 <section id="g3">
  <h2>グラフ3</h2>
  <p><img src="" width="" height="" alt=""></p>
 </section>
・・・【中略】・・・
 <div id="menue">
  <ol>
   <li><a href="#g1">グラフ1</a></li>
   <li><a href="#g1">グラフ1</a></li>
   <li><a href="#g1">グラフ1</a></li>
・・・【中略】・・・
  </ol>
 </div>
</section>
として、スタイルシートで
#idを左にfixedで固定してしまう。
複数を並べるとなるとjavascriptで内容を書き換えなければならないでしょう。

>グラフのボタンを押すとそのグラフが表示されたり非表示になったりして複数のグラフを比較することができる。
 単純に、表示されるグラフが変わるだけですよね。複数のグラフを並べるので゛はなく!!

 なら普通に目次と内容を書けばよいだけですが?
<section>
 <h2>グラフ色々</h2>
 <section id="g1">
  <h2>グラフ1</h2>
  <p><img src="" width="" height="" alt=""></p>
 </section>
 <section id="g2">
  <h2>グラフ2</h2>
  <p><img src="" width="" height="" alt=""></p>
 </section>
...続きを読む

QExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

マクロ初心者です。
Excelマクロでグラフを作成するときに、元データを指定する所で、
Source:=Range("A1:A5,C1:C5")とするような場合、
「A1」とかアルファベットでの番地指定ではなく、
Cellsを用いて書きたいのです。

Source:=Range("A1:A5")であれば、
Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。

よろしくお願いします。

Aベストアンサー

Unionを使用したらできると思います。

Source:=Union(Range(Cells(1, 1), Cells(5, 1)), Range(Cells(1, 3), Cells(5, 3)))

今Excelがインストールされてないパソコンで作業していないので確認はしていないのですが・・・。

よかったら参考にして下さい

Qダイヤモンドに関する映画

こんにちは。ダイヤモンドに関する映画を探しています。
今のところ、ブラッドダイヤモンド、ブレイクアウトと、世界中にI Love You(Harry Winstonでの購入シーンがあった)を見ましたが、他にありますか?ダイヤモンド、ダイヤモンド商人、高級ジェリーショップ(Tiffany以外)で、他に映画がありましたら、教えてください!

Aベストアンサー

こんにちは!
「ブラッドダイヤモンド」のようにダイヤを主題にではなく、「世界中がアイ・ラヴ・ユー」のように小道具として出てくる…というだけでもいいのですか??
またダイヤ単体ではなくて、「ダイヤと他の宝石を使ったジュエリー」でもかまいませんでしょうか?

まずは
「マリー・アントワネットの首飾り」(2001)
「ルパン」(2005)
です。
史実でも有名な首飾り事件をモチーフにしており、大小合わせてとはいえ500個以上ものダイヤがふんだんにあしらわれ、「現代の感覚でもおおよそ30億円(Wikipedia調べ)」という首飾りが登場します。
「ルパン」ではこれのレプリカを作ったのはカルティエです。首飾りのみならず、王妃のジュエリー類や冠などもカルティエ・コレクションからの貸し出しだったそうです。宝石以外の室内装飾や調度類も見物です。

「メイド・イン・マンハッタン」(2002)
作中二人が恋に落ちるのがありえない、ファンタジーでも度が過ぎると叩かれまくったファンタジー恋愛映画ですが、二人のダンスシーンでジェニファー・ロペスが身につけている豪華なジュエリーはハリー・ウィンストンのネックレスとイヤリングなんだそうです。
「プリティ・ウーマン」でもオペラを見に行くときにドレスに合わせたネックレスをプレゼントされますが、あれもルビーとダイヤだそうです。

「10日間で男を上手にフル方法」(2003)
10日間で男にフラれるハウツー記事を書けと言われた雑誌記者と、10日間で女をオトせたら大手ダイヤモンド会社の担当にしてやる、と言われた広告代理店の男の駆け引きの話で、タイトルほどヒドくはなかった。
NYの華やかスポットがしょっちゅう出てくるのですが、頂点は主人公がパーティのシーンで身につけるハリー・ウィンストンのジュエリー。総90カラット弱だそうで、とても素敵です。

「ラスト、コーション」(2007)
冒頭にも大きなダイヤとおぼしき指輪をつけた女性たちが出てきますが、物語を大きく動かすのがカルティエ制作の6カラットのピンクダイヤの指輪。
公開当時、「激しいセックスシーンが見どころ」と言われたそうですが、露出が激しいというより暴力的なセックスを含むのでご注意。

「シャネル&ストラヴィンスキー」(2009)
作中のココ・シャネルが身につけているものが全て本物のシャネル。当時のものではなくて、シャネルとカール・ラガーフェルドの全面協力による再現だそうです。
特にクライマックスである再演シーンにてココ・シャネルが身につけているダイヤをふんだんにちりばめたネックレスがはっきり見て取れます。
同じ全面協力でも「ココ・アヴァン・シャネル」でダイヤが出てきたかどうか、ちょっとリストにありません。
同じくシャネル制作のダイヤモンド・ネックレスは「ゴスフォード・パーク」(2001)でも登場します。イギリス貴族のマナーハウスが舞台で、凝り性の監督によってしつらえられているので豪華です。でも貴族本人たちが主役というわけでもないので、ダイヤはちらりです。

「ナイン」(2009)
ニコール・キッドマン演じる女優が、総カラットで数十以上と言われるゴージャスなブレスレットとイヤリングをじゃらじゃら言わせています。ショパールだそうです。
主人公であるダメグズ男の周りにはなぜかきらきらしい女性がいっぱいいて、彼女らが身につけているジュエリーもかなりのものです。

「白雪姫と鏡の女王」(2012)
映画体の出来よりも、后に食われ気味の白雪姫の眉毛ばっかり気になる映画ですが、この作中でジュリア・ロバーツと白雪姫が身につけているティアラ、グレース・ケリーが公妃になったあとで実際に身につけたものを撮影に借りたんですって!ご利益ありそう。ヴァン・クリーフ&アーペルだそうです。
グレース・ケリーが主演の映画でも「上流社会」で大きなダイヤの婚約指輪が出てくるそうです。私はまだ未見ですが、実際にレーニエ公から贈られたカルティエの婚約指輪を作中でも婚約指輪として扱ったという…計10カラット以上だそうで、見ているこちらもため息ものの豪華なダイヤです。
来年公開予定の映画の中にグレース・ケリーを主題にしたものがあって、この婚約指輪ほか、グレース・ケリーが身につけたダイヤのジュエリーがカルティエによる再現で登場するそうです。

他にも未見のものでは。
イングリッド・バーグマンの「汚名」で身につけているネックレスがハリー・ウィンストンのものだそう。
オードリー・ヘップバーンの「おしゃれ泥棒」でもダイヤのジュエリーが出てきます。
#3もふれていらっしゃいますが、「紳士は金髪がお好き」。
ダイヤモンド会社社長からマリリン・モンローが贈られたダイヤのネックレスが出てくるはずです。このカナリアイエロー・ダイヤ、数百年インドの王家所有のあとオーストリアのマリア・テレジアが所有していたという世界でも有名なダイヤのひとつなのです。マハラジャの領地名にちなみ「The Moon of Baroda(バローダの月)」と呼ばれ、24カラットもあります。
実生活でも宝石コレクターだったエリザベス・テイラーの「別離」。ダイヤモンドではなかったかもしれませんが、実際に夫のどなたかから贈られた見事なジュエリーが出てくるそう。
エリザベス・テイラーは死後、遺品となった宝石コレクションがクリスティーズのオークションにかけられています。その中でももっとも注目を集めたのが大粒のダイヤモンドの指輪です。
オークションに際し「The Elizabeth Taylor Diamond」と名付けられた指輪は33カラットを超え、その品質もDカラーのフローレスという破格のもの。
http://www.christies.com/elizabethtaylor/saleroom_legendary_jewels.aspx
それともう一つ、2度結婚したバートンがテイラーに贈ったことから「Taylor-Burton Diamond」と呼ばれるようになった69カラット超のダイヤモンドも、もしダイヤモンドにご興味があればご覧ください。

こんにちは!
「ブラッドダイヤモンド」のようにダイヤを主題にではなく、「世界中がアイ・ラヴ・ユー」のように小道具として出てくる…というだけでもいいのですか??
またダイヤ単体ではなくて、「ダイヤと他の宝石を使ったジュエリー」でもかまいませんでしょうか?

まずは
「マリー・アントワネットの首飾り」(2001)
「ルパン」(2005)
です。
史実でも有名な首飾り事件をモチーフにしており、大小合わせてとはいえ500個以上ものダイヤがふんだんにあしらわれ、「現代の感覚でもおおよそ30億円(Wikipedia...続きを読む

QExcel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすればよろしいでしょうか。
第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。

本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすれ...続きを読む

Aベストアンサー

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

...こんな感じ。
普通に手作業で作成するものをマクロ記録すればヒントになるでしょう。
後から系列を追加すればいいわけです。

>本番のグラフは行数と列数はいろいろな場合があるので...
...に対応させる一例としては以下。

Const MN = 1 'データ開始行
Const MX = 10 'データ個数
Dim chartObj As ChartObject
Dim x, y
Dim z As Long
Dim i As Long

x = VBA.Array(1, 3, 5) 'x値の列
y = VBA.Array(2, 4, 6) 'y値の列
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 0 To UBound(x)
    With .SeriesCollection.NewSeries
      .XValues = Cells(MN, x(i)).Resize(MX)
      .Values = Cells(MN, y(i)).Resize(MX)
    End With
  Next
End With

Set chartObj = Nothing

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

.....続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング