エクセルを使ってアンケートの集計をしています。
エクセルのブックを開いてデータを入力し、プリントアウトしました。もう一度、データが間違っていないか確認したら、プリントアウトしたデータと、保存した(コンピュータ・FDの中にある)データとが、違っていたりするのですが、こういうことってありえますか?
 
状況的には以下のようになっています。
6枚のシートを5ブック作っていて、6ブック目に総集計をだそうとしています。そこで、総集計のブックにはオートサムで他のブックを開いて「このセルと、このセルと....」という形で足し算させてます。
(かなり要領悪いとは思うのですが)
他のブックのセルと足し算させようとすると必ず絶対参照マークがついてしまうので、F4キーで相対参照に直して、オートフィルで他の質問項目に計算式のコピーをさせてました。

1回目まではうまいこと行っていたようにみえたのですが、データの入力間違えに気づいて直したら、総集計に反映されません。(総集計のブックを開くときに「リンクされているデータが、、、更新しますか?となるので「はい」と答えているのですが)
で、さらに、作成していた1~5の各ブックのデータの内容がきちんと保存しているのにもかかわらずなぜか変更しているのです。
そんなことってありうるのでしょうか?
もう怖くてシート毎にデータの変更をした場合いちいち保存していても、それでもデータが、プリントアウトしたものと変更していたりするんです。
これは一体どうしたことなのでしょうか?
わかりにくい質問かもしれません。
かなり、混乱しています。どうか助けてください。

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

A 回答 (5件)

>ANo.#1の補足の


>・・・なにか間違ってしまっているのでしょうか?
 特に問題はないようですが・・・

計算がうまくいかないらしいですが、色々想像してみました。
総集計を計算している6ブック目だけを開くと、算式は

 =SUM('A:\・・・\[例1.xls]Sheet1'!A1,'A:\・・・\[例2.xls]Sheet1'!A1,・・・)

となるはずですが、5つのBookのパス『A:\・・・\』が正しいか確認されたでしょうか。(A:\ が普通?)
質問の事象は、総集計のBookを定義した後、5つのBookを移動やコピーしたりすると起きるかもしれません。
実際に修正しているBookと、算式が示している同名のBookが別フォルダにあるようなことはないでしょうか。

また、5つのBookのどれかを開いて修正し(この時点で6ブック目の総集計は修正が反映されている)修正したBookを保存していない場合は正しい集計がされていないことになります。リンクの更新をするか、正常なら総集計のBookを開きなおせば元に戻りますが。

また、総集計のBookを開いた状態で、別のExcelを開いて5つのBookのどれかを修正しても総集計のBookには反映できません。編集→リンクの設定→今すぐ更新もダメでしょう。修正したBookを保存した後、総集計のBookを更新しないと反映されないでしょう。

このくらいしか思いつきませんでした。ご参考に。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
確かに、ブックを移動してからおかしくなりました。
HDD上で作成―保存、して、FDにバックアップをとり、FDの中に入ったまま編集しなおし、保存をし、またHDD上に戻して保存しなおし、また編集し、という作業を6,7回は軽くしました。
(その間、そのデータは二人の人間が操作をしていて(一人はまったくPCわからないので)打ち込みのみをやってもらっていて。)
まったく新しいブックでやってみたら、大丈夫でしたので。もしかしたら参照元のブックを読み間違えてしまってデータがおかしくなっていたのかもしれません。

ちなみに
>『A:\・・・\』が正しいか確認されたでしょうか。(A:\ が普通?)
っていうのは、どういうことなのでしょうか、、、?

お礼日時:2001/09/25 10:26

>設定してしまったリンクを解除する方法ってあるのでしょうか?


解除というか、設定変更する場合は、

編集→リンクの設定→Bookを選択→リンク元の変更ボタンを押す→変更するファイルを選択

で可能と思います。(Excel97です)
    • good
    • 0
この回答へのお礼

ありがとうございました!!リンクの解除ですが、
Aというブックのどこかにリンクされてしまっている時(もうそのブックはどこにあるのかわからなくなってしまって...)仮定としてA'というブックにリンクされているとします。
リンク元を変更で、Aという自分のブックにリンク先を変えることで解除と同じことになりました。

毎回「データを更新しますか?」と聞かれ更新したくないのであれば、いいえ、と答えればいい話なのですが、リンクしている、という状況を解除したかったのです。(意味あるのかわかりませんが...)こうして、一回閉じて、またあけてみたら、「データを更新しますか?」ってもう聞かれません。すっきりいたしました。本当にありがとうございました。また、よろしくお願いします。

お礼日時:2001/09/25 22:49

>『A:\・・・\』が正しいか確認されたでしょうか。

(A:\ が普通?)
の意味は、FDのルートに直接書きこめば『A:\[例1.xls]』ですし、FDにフォルダを(例えば'Data')作ってそこに保存すれば『A:\Data\[例1.xls]』と表示される意味です。

Bookを移動しても、算式が見ているファイルの保存位置は自動的に変更(ファルダの変更)されませんので総集計のBookの算式が示す『A:\・・・\』部分と5つのBookが保存されているフォルダが一致しているか確認してみるといいと思います。
    • good
    • 0
この回答へのお礼

なるほど!!ありがとうございます。

ところで、もう一つ...。

設定してしまったリンクを解除する方法ってあるのでしょうか?

お礼日時:2001/09/25 11:42

tutauさんの表現自体は合っていると思いますよ。



まずは、式を立てるとき以外は1度にいくつものブックを開くのをやめましょう。
原因うんぬんの前に、操作している人間が混乱する可能性が高いからです。

他のブックの値を参照する場合は、更新について特徴があります。
(同じブックの値なら、ツール~オプションの計算方法の部分で調整可)

~参照元のデータの更新が反映されるタイミング~
1、参照先のブックを開く時に「…更新しますか?」で「はい」を選択した時
2、参照元・参照先両方のブックを開いていて参照元のデータが更新された時
3、参照先のブックで編集~リンクの設定で「今すぐ更新」を押した時

1については、参照元のデータが保存されていることが必須条件です。
2は、新データを入力しEnterを押すと自動更新されます。
3は、手動更新(普通はF9でできる)の他ブックとのリンクがあるときバージョンですね。

tutauさんのお話からすると、本来ならその操作でできるはずなのですが
「更新したはずの参照元データが変わっている」というのが変です。
一つの参照元ブックを開き、分かりやすい値に変更して保存→閉じる→
参照先ブックを開く→「更新しますか」で「いいえ」→リンクの設定で更新
というのをそれぞれのブックについて繰り返し、
どれか一つのブックについてのみデータがおかしいなら
そのブックが、全部だめなら参照先のブックが、
ファイル損傷している、という可能性が考えられます。
次に、全てのブックの全セルを新規ブックにコピー貼り付けして
新規ブック同志でもできないかどうか見てみましょう。
もしそれでもダメならExcel自体がおかしいのかもしれませんが
そういったことはあまりないですね。
どうしてもダメならExcelを一度削除しインストールし直すのも
効果ありかもしれません。

また、印刷したときだけ値が変わるなら印刷プレビューでも確認
してみてください。

あとFDに全てのブックを保存しFDから直接開いている状態よりは
HDDに保存し直してから開いた方がいいですよ。
空き領域不足ということも起こり得ます。
    • good
    • 0
この回答へのお礼

とりあえず、エクセルの再インストール、っていう状況は回避できました。
でも、どうしても、数値があわない、っていうのはいまだによくわかりません。
新規ブック同士でやってみます。
回答ありがとうございました。

お礼日時:2001/09/25 22:53

コピー貼り付けをするときに、リンク貼り付けをすると変更が貼り付け先にリアルタイムで反映されますよ。


コピー元を選択→編集メニューから「形式を選択して貼り付け」を選びます。ダイアログボックス内の「リンク貼り付け」ボタンをクリック。これで完了です。
試してみてください。

この回答への補足

早速の回答ありがとうございます。

コピー、リンク貼り付け、、、。
ええと、私こういう手順で計算させているのですが...
まず、総合計を表示させたいブックと、足したいブックをすべて開いてから、総合計を計算して表示させたいセルを選択しますよね。それから、サムボタンを押して、足し算したいそれぞれのブック(シート)のセルを選択(相対参照にしながら)してenterキーで確定してます。
計算方法としてはあってますよね...?
その計算式をオートフィルでドラッグして、他の項目のセルにも計算式をコピーしてたのです。
例えばそれは、こういう式です。
=SUM([例1.xls]Sheet1!A1,[例2.xls]Sheet1!A1,([例3.xls]Sheet1!A1)
普通にセル選択だけをすると絶対参照マークがついてしまうので、相対参照にかえてから、オートフィルで式のコピー(っていう言い方が間違ってるんでしょうか...)をしています。
他のブックで試してみたらできました。でもその実際の集計をやっているブックはなにか間違ってしまっているのでしょうか?

1回目はそれで計算してくれたのですが、2回ほどもとのブックの数値を打ち直して、総合計のシートに反映させようと思ったのですが、そういうことってできます、よね?

その総集計のブックを開くときに「開いているブックには、ほかのファイルへの自動リンクが設定されています。このブックを更新し、他のブックの変更を反映しますか?
・すべての情報を更新する場合は[はい]をクリックしてください
・既存の情報を保持する場合は[いいえ]をクリックしてください」
とあるので、はいをクリックするんです。でも、変更した情報にならないどころか、前の情報のままにもならず、いったい何の、いつのデータなの?という部分のセルと、ちゃんと前のままになっている部分のセルが混在しているのです。

で、もともとの合計させたい5つのブックの数値をみてみようと、開けてみると、先ほど打ち込みなおしたデータと違うデータになっていて、(打ち込む前のデータとも違う)それが開けるたびに違っていたりするのですが...

補足日時:2001/09/24 14:33
    • good
    • 0

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

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

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

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

Qエクセルで他のブックを参照した式を使用していて参照先のブックを移動させたとき

エクセル2003で他のブックを参照している式があります。
参照先のブックを別のフォルダに移動させたとき、「更新できません」とエラーが出ますが、回避方法としましては置換で参照先を変更していくしかないでしょうか。
他に方法ありましたら、アドバイスいただけませんか。

Aベストアンサー

簡単な方法があります。
[編集]→[リンクの設定]→[リンク元の変更]からどうぞ。

Q他ブックデータを参照したセルのコピー

住所録1.xlsx
住所録2a.xlsm
住所録2b.xlsx

上記のような3つの住所録があり、
1は、表の形は同じですが、セルの幅や行の幅が2a・2bとは異なります。
2aと2bの表の形は全く同じで、
2aはデータの入っているもの
2bは罫線と見出しのみのもの です。

2aの住所録から何名か分を抜き出して2bの住所録に貼り付けて使います。

2aのデータは、全てが1の参照という形で入っています。
例: 2aのH205='[住所録1.xlsx]住所録 '!$H$205

2aから2bへのコピー&ペーストがうまくいきません。

2aの住所録1名分全ての項目をまとめてコピーし、2bに貼り付けると、
結合されたセルについて、すべて#VALUEが返ります。
値のみの貼り付け とすると、
コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません
とのエラーが出ます。
(コピー領域と貼り付け領域の形は全く同じなのですが…)

セルごとにひとつひとつ値のみの貼り付けをしていけば
結合されたセルについてもコピー&ペーストできることはわかったのですが、
ものすごい手間と時間を要します。

なにか良い方法はないものでしょうか…?


お詳しい方、よろしくお願いいたします。

住所録1.xlsx
住所録2a.xlsm
住所録2b.xlsx

上記のような3つの住所録があり、
1は、表の形は同じですが、セルの幅や行の幅が2a・2bとは異なります。
2aと2bの表の形は全く同じで、
2aはデータの入っているもの
2bは罫線と見出しのみのもの です。

2aの住所録から何名か分を抜き出して2bの住所録に貼り付けて使います。

2aのデータは、全てが1の参照という形で入っています。
例: 2aのH205='[住所録1.xlsx]住所録 '!$H$205

2aから2bへのコピー&ペーストがうまくいきません。

2aの住...続きを読む

Aベストアンサー

このようなケースではOfficeクリップボードを利用します。

ホームタブのクリップボードの右下のダイアログ起動ツールをクリックしてOfficeクリップボードを表示させます。

対象範囲をコピー後、貼り付けるときに、このクリップボードに表示されたコピー内容をクリックしてみてください。

QVBA 他ブックのセルの値を1セルずつ代入したい

昨日↓でお世話になりました。
http://oshiete1.goo.ne.jp/qa4299999.html

おかげさまでだいぶ先に進むことができました。
ですがまた行き詰ってしまったので、お力を借りれたらと思い質問させていただきます。

昨日ご教授いただいたコードでは、「管理表.xls」のコマンドボタンを押すと、同一フォルダ内にあるブック「*予定表*.xls」内のシート「*予定?」の固定の範囲
「G2,H2,N3,O3」を「管理表.xls、sheet2、A1:D4」に
「B14:I44」を「管理表.xls、sheet2、A2:H32」に
まだファイル、シートがある場合はループでそれらの次の行に値をいれていくことができたのですが、固定範囲のうちの「G2,H2,N3,O3」を、「管理表.xls、sheet2、A2:H32」のA~D列全てに付けたいのです。
なんかわかりづらい表現になってしまいましたが、

____A___B___C___D____E____F____G____H____I____J_____K____L
1 G2 G2 N2 O3 B14 C14 D14 E14 F14 G14 H14 I14
2 G2 G2 N2 O3 B15 C15 D15 E15 F15 G15 H15 I15
3 G2 G2 N2 O3 B16 C16 D16 E16 F16 G16 H16 I16
            ・
            ・
            ・



という感じにしたいんです。どうかご教授お願いします。
一応コードを載せておきます。

Sub 予定()

Dim Pn As String
Dim Fn As String
Dim ws As Worksheet
Dim r As Range
Dim v, i As Integer

Pn = ActiveWorkbook.Path
ChDir Pn

Fn = Dir("*予定表*.xls")

v = Array("N3", "O3", "G2", "H2")

Set r = ThisWorkbook.Worksheets("Sheet2").Range("A1")


Do Until Fn = ""

Workbooks.Open Filename:=Fn

For Each ws In Worksheets


If ws.Name Like "*予定?" Then
With ws
For i = 0 To 3
r.Offset(0, i).Value = .Range(v(i)).Value

Next

r.Offset(1).Resize(31, 8).Value = .Range("B14:I44").Value
Set r = r.End(xlDown).Offset(1)


End With

End If

Next


Workbooks(Fn).Close SaveChanges:=False

Fn = Dir()

Loop

End Sub

++++++++++++++++++++
OS ⇒Windows XP
Version⇒Excel 2000
++++++++++++++++++++

昨日↓でお世話になりました。
http://oshiete1.goo.ne.jp/qa4299999.html

おかげさまでだいぶ先に進むことができました。
ですがまた行き詰ってしまったので、お力を借りれたらと思い質問させていただきます。

昨日ご教授いただいたコードでは、「管理表.xls」のコマンドボタンを押すと、同一フォルダ内にあるブック「*予定表*.xls」内のシート「*予定?」の固定の範囲
「G2,H2,N3,O3」を「管理表.xls、sheet2、A1:D4」に
「B14:I44」を「管理表.xls、sheet2、A2:H32」に
まだファイル、シートがある場...続きを読む

Aベストアンサー

>上かつ、N2、O3は文字列なのでstringにしたいんです。

サンプルです。

Sub test2()
 Dim ws As Worksheet
 Dim r As Range
 Dim v, i As Integer

 v = Array("N3", "G2")

 Set r = Worksheets("Sheet2").Range("A1")       '貼り付けるのは1行目から?
 Worksheets("Sheet2").Range("A:B").NumberFormatLocal = "@"  '文字列設定

 For Each ws In Worksheets
     If ws.Name Like "*予定?" Then
        With ws
             For i = 0 To 1
                 r.Offset(, i * 2).Resize(31, 2).Value = .Range(v(i), .Range(v(i)).Offset(, 1)).Value
             Next
             r.Offset(, 4).Resize(31, 8).Value = .Range("B14:I44").Value
             Set r = r.End(xlDown).Offset(1)
        End With
     End If
 Next
 Set r = Nothing
End Sub

>上かつ、N2、O3は文字列なのでstringにしたいんです。

サンプルです。

Sub test2()
 Dim ws As Worksheet
 Dim r As Range
 Dim v, i As Integer

 v = Array("N3", "G2")

 Set r = Worksheets("Sheet2").Range("A1")       '貼り付けるのは1行目から?
 Worksheets("Sheet2").Range("A:B").NumberFormatLocal = "@"  '文字列設定

 For Each ws In Worksheets
     If ws.Name Like "*予定?" Then
        With ws
      ...続きを読む

QExcelで同一セル内に入力されているデータを他のセルに分割したい

こんにちは。
宜しくお願い致します。

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
A1セル~A100セル…という風に、縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されているイメージです。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたいと思っています。
以下のセルも同様に、挿入→分割といった感じで全データを分割させたいのです。

OKWave内でもチェックして、
http://okwave.jp/qa1927817.html?ans_count_asc=2

http://okwave.jp/qa4216384.html
など、近いものはいくつか見つけたのですが、ピッタリのものが見つからず、マクロの編集もよくわからなかったのでこちらで質問させてもらいました。

どなたか申し訳ありませんが、教えていただけますか?
宜しくお願い致します。

こんにちは。
宜しくお願い致します。

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
A1セル~A100セル…という風に、縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されているイメージです。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたいと思っています。
以下のセルも同様に、挿入→分割といった感じで全...続きを読む

Aベストアンサー

#04です。B列、C列の値をコピーするようにしました

Sub Macro1()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim rng As Range
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "A"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "A").Value, Chr(10))
      Set rng = Cells(idx, "B")
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wkStr(cnt)
        Cells(idx, "B").Value = rng.Value
        Cells(idx, "C").Value = rng.Offset(0, 1).Value
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown
        End If
      Next cnt
    End If
  Next idx
End Sub

>何度も何度も申し訳ありませんが
でもね、こんな風に追加で質問を小出しにされるのはいやですね。
これ以上変更があるならご別スレにしてください。それなら回答します

#04です。B列、C列の値をコピーするようにしました

Sub Macro1()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim rng As Range
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "A"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "A").Value, Chr(10))
      Set rng = Cells(idx, "B")
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wkS...続きを読む

QExcelで同一セル内に入力されているデータを他のセルに分割したい

http://okwave.jp/qa4369634.html?ans_count_asc=20

で質問をして、何度かやりとりをさせていただいて

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。
かつ、B・Cセルは増えたセルにそれぞれのデータをコピーしたいと言ったら、

Sub Macro1()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim rng As Range
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "A"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "A").Value, Chr(10))
      Set rng = Cells(idx, "B")
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wkStr(cnt)
        Cells(idx, "B").Value = rng.Value
        Cells(idx, "C").Value = rng.Offset(0, 1).Value
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown
        End If
      Next cnt
    End If
  Next idx
End Sub

といったマクロのご回答をいただきました。

これを元に、

・データが入っているセルをA列→B列に変更
・A列のデータはセルが増えた分だけ増やしたい
・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい

と変更したいのですが…。

すいませんが、宜しくお願い致します。

http://okwave.jp/qa4369634.html?ans_count_asc=20

で質問をして、何度かやりとりをさせていただいて

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。
かつ、B・Cセルは増えたセルにそれぞれ...続きを読む

Aベストアンサー

これでどうでしょう。
でも
>・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい
はよく理解できまていません。とりあえず空白セルを挿入するようにしました

Sub Macro3()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim wk
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("B65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "B"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "B").Value, Chr(10))
      wk = Cells(idx, "A").Value
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wk
        Cells(idx, "B").Value = wkStr(cnt)
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 2).Insert shift:=xlDown
        End If
      Next cnt
      Cells(idx + 1, "C").Resize(UBound(wkStr), 2).Insert shift:=xlDown
    End If
  Next idx
End Sub

これでどうでしょう。
でも
>・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい
はよく理解できまていません。とりあえず空白セルを挿入するようにしました

Sub Macro3()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim wk
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("B65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "B"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "B").Va...続きを読む


人気Q&Aランキング

おすすめ情報