• 締切済み

エクセルで作成したグラフの元データを消してしまいました

エクセルで作成したグラフの元データが必要になり、データを確認したところ、◆元のデータを削除していたことが判明しました。 ↑↑↑↑↑ グラフオブジェクトをコピーして新たなエクセルファイルにまとめていたのですが、元データで表を作成することが必要になりデータの保存場所を確認したところ、データを削除していることが判明しました。 元々のナマデータのファイルは名称変更を繰り返した上、削除してしまったのでもう探し出すことが不可能です。また、プリントアウトした紙もありません。 グラフオブジェクトから元データで表示させてみても、既に存在しないファイル名が保存されるだけで数値がわかりません。 ◆平均と誤差を使ったグラフなのでせめて数値だけでも知りたいと思っています。 ◆グラフが表示されているので、何らかの形で保存しなおすことが出来るのではないかと思い、質問しています。 どなたかアドバイスをよろしくお願いします!!

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wendy02です。 >このマクロからはY誤差範囲は表示されないのでしょうか? 残念ながら、この件は、当分時間が掛かりそうです。たぶん、出せるだろうという期待はできるのですが、今のところ、いろいろ試してみてはいるのですが、その範囲を取り出すことが出来ません。

s_a_r_a_h
質問者

お礼

Wendy02さま ◆年末年始のお忙しい期間中に、Excelにお時間を割いていただき 本当にありがとうございました。 やはり、Y誤差範囲は無理そうなのですね。 ◆もう一度ナマデータの取り直しも検討してみます。。 もし、万一、Y標準誤差の取り出し方がわかりましたあかつきには ご一報下さい。 しかし、平均値がわかったので今後も何かあったら利用できるのではと思い、大変感謝しています。 ありがとうございます。 s_a_r_a_h拝

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 以下は定型文ですが、私は、いつもこのように書いています。 -------------------------------------------------------------- ※ 標準モジュールへの取り付け方 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、前述のコード(Sub ChartGetData() ~ End Sub) までを貼り付けて、 Alt + Q で、画面を閉じます。 -------------------------------------------------------------- 次に、実行に関しては、 -------------------------------------------------------------- ※マクロの実行の仕方 当面、Visual Basic Editor 画面を閉じたら、Alt + F8 を押しますと、窓の中に、「 ChartGetData 」という名前が出てきますから、グラフのあるシート上で、そのマクロ名の文字を二回クリックをすればよいです。 -------------------------------------------------------------- たぶん、マクロをお使いでなかったら、それひとつだけですが、もし多くある場合は、[マクロの保存先]を「作業中のブック」にすると、見やすくなります。 先ほどのAlt+F8の窓のところで、マクロの名前を、クリック一回すると、マクロが選択され、[オプション等]のボタンが、アクティブになりますから、[オプション]をクリックして、ショートカットを取り付けてもよいとは思います。 なお、一瞬の間に、データは取り出されてしまいます。また、マクロを実行して、そのマクロのあるブックに1つの[ChartData]というシートしか作られません。すべて、そこに保存されます。  

s_a_r_a_h
質問者

お礼

自分で作成した見本ファイルから平均値のデータを救出することが出来ました。 ありがとうございました!! ・・しかし、Y誤差範囲は出てきませんでした。 このデータ形式で保存したファイルからY誤差範囲の値を救い出すのはやはり無理なのでしょうか。。。 お忙しいところ本当にたびたび申し訳ありません。 よろしくお願い致します。

s_a_r_a_h
質問者

補足

こちらに書いてあった通りにマクロを実行してみたところ、 平均値のデータを救出することができそうです。 見本に作成したファイルから あっという間に平均値データが救出されました 本当に感謝しています!!  ただ、残念ながら、Y誤差範囲のデータが見当たりませんでした。 ずうずうしい確認だとは思うのですが このマクロからはY誤差範囲は表示されないのでしょうか? それともデータ的に無理な状況ということでしょうか? 何度も伺って本当にすみません。確認できたらと思っています。 よろしくお願い致します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。#1のWendy02です。 埋め込み型グラフで、ソースの元のブックのデータを削除してしまった棒グラフを、取得するマクロです。掲示板の一般的な質問の中では、グラフ関係が一番難しいです。 こちらで、元のソースブックで棒グラフを作り、Y誤差表示をつけ、新しいブックにコピーしてから、元のブックを削除し、架空になったグラフのリンク先を抹消して試しました。バージョンは、Excel2003と2000で調べられております。 >元データの表示を見ると範囲では「複雑なため表示できません」 この表示の覚えがあるのですが、今は、再現できていないので、もしかしたら、うまくいかないかもしれません。一度、試してみてください。だめな場合は、また再び考えます。 新しく掲示を起こす必要はありません。私は、だいたい、2ヶ月ぐらいは、サポートしています。ただ、最初の1週間目は、補足側に書いて、その後、お礼側に書いていただけると、こちらがPCの前にいる限りは、メールが届きますので、一両日に対応できます。補足ですと、対応が遅れます。 このマクロの仕様: 最初に、ChartData というシートが作られ、そこにデータが書き込まれます。データがすでにあれば、その下にデータが書き加わります。 '---------------------------------------------------------------- '基本的には、このマクロは、「標準モジュール」に入れてお使いください。 '---------------------------------------------------------------- Sub ChartGetData() 'ver2634245.00 '埋め込み型グラフからデータを取得するマクロ  Dim acSheet As Worksheet  Dim sh As Object  Dim shFlg As Boolean  Dim ch As Object  Dim NumOfRows As Integer  Dim sr As Variant  Dim cnt As Integer  Dim i As Long  'グラフのあるシートをアクティブにしてください。  Set acSheet = ActiveSheet  For Each sh In ThisWorkbook.Worksheets  If sh.Name = "ChartData" Then    shFlg = True    Exit For  End If  Next sh  If shFlg = False Then   'ChartDataというシートが作られます。   ThisWorkbook.Worksheets.Add   ActiveSheet.Name = "ChartData"  End If  acSheet.Select  If acSheet.ChartObjects.Count = 0 Then   MsgBox "このシートには、グラフとして認識できるものはありません。", vbInformation   Exit Sub  End If  For Each ch In ActiveSheet.ChartObjects   cnt = ch.Chart.SeriesCollection.Count   NumOfRows = UBound(ch.Chart.SeriesCollection(1).Values)      With Worksheets("ChartData")    i = .Range("A65536").End(xlUp).Row    If i > 1 Then i = i + 2    If .Cells(i, 1).Value = "" Then     .Cells(i, 1).Value = ch.Name    End If    .Cells(i + 1, 1).Resize(NumOfRows).Value = _    Application.Transpose(ch.Chart.SeriesCollection(1).XValues)        For Each sr In ch.Chart.SeriesCollection     .Cells(i, cnt) = sr.Name     .Cells(i + 1, cnt).Resize(NumOfRows).Value = _     Application.Transpose(sr.Values)    cnt = cnt + 1   Next sr  End With Next ch Set acSheet = Nothing End Sub

s_a_r_a_h
質問者

お礼

Wendy02さん、面倒な内容にも関わらず 丁寧な回答をありがとうございます。 ただ、webページなどを参考に上を試して見たのですが PCに関する知識がほとんどないためか うまくいきません。 補足の部分に記入してみたのですが、何か処理のうまくいかない原因でお気づきの点を教えて頂けないでしょうか? 年末年始でお忙しいところ本当に申し訳ありません。どうぞよろしくお願いいたします。

s_a_r_a_h
質問者

補足

面倒な内容にも関わらず 本当に丁寧な回答をありがとうございます。 グラフの処理ってすごく大変なことなんだと泣きながら実感している状態です。 しかし、マクロを使ってみることでデータが救えるかもしれないということで光が見えた気分です。 ◆処理したいデータは手元にないのですが、早速、処理方法を確認しようとエクセルデータを作ってみました。 ◆ただ、今まで◆簡単にしかソフトウェアを使用したことがなく 回答頂いた内容のうち、マクロの部分がどこからどこまでかがわかりません。「Dim acSheet As Worksheet」以下最後まででしょうか? 以下の方法やってみたのですがうまくいきません。 どこの部分が原因かお気づきの点をご指摘いただけますでしょうか? よろしくお願いします。 参考にしたwebページ;エクセルでVBを使ってマクロを作る http://www.zecc.jp/question02_04.html 1.コピーしたグラフオブジェクトのみを保存したファイルを開く 2.[ツール]→[マクロ]→[Visual Basic Editor] 3.[挿入]→[標準モジュール] 4.表示されたマクロ見本用.xls-Module1(コード)の広い部分に回答部分のDim acSheet As Worksheet 以下をコピー&ペーストで貼り付ける クローズボックスで閉じ、元のエクセルファイルを開きなおす。 ↑↑ 上の様に操作してみましたが新たなシートは現れません。 根本的な設定の変更など必要なのでしょうか 回答お待ちしています。 よろしくお願い致します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 グラフの場合は、そのグラフの種類と、Excelのバージョンが必要になると思います。時々、出てくる質問で、たぶんマクロで取り出せたと思います。しかし、もう少し情報が必要です。私の経験では、この両方の情報がないと、うまくいかなかった覚えがあります。

s_a_r_a_h
質問者

補足

早速、回答ありがとうございます。 途方に暮れていたので何らかの反応があった事がとても嬉しいです。 グラフは棒グラフです(集合縦棒グラフ)。 しかし、要素は1つなので1つずつのカラムが3本の状態になっています。また、上側にのみY標準誤差をつけてあります。 元データの表示を見ると範囲では「複雑なため表示できません」となり、また、系列で見ると既に存在しないファイルのファイル名とシート、セルの場所が表示されています。 エクセルのバージョンですが、 当時、◆エクセル97とエクセル2000、2002とでデータをやり取りしていたためどのようにお答えしたらよいかわかりません。 現在、使用しているのはエクセル2003ですがどこを見たらお答えできるでしょうか? なお、◆本当に申し訳ないのですが、1月4日までデータの拡張子などを確認をすることができません。 質問を再度立ち上げたほうがよいでしょうか? 本当に困っているのでこの後の確認方法もぜひ知りたいと思っているのですが。。。 どうぞよろしくお願い致します。

関連するQ&A

専門家に質問してみよう