プロが教える店舗&オフィスのセキュリティ対策術

質問させてください。
シートを2枚用意して野球の個人成績表を作りたいと思っています。
今日の成績と通算成績です。
例えば通算10打数5安打の人がいたとして
今日の成績が5打数3安打だったら
今日の成績シートに5、3を入力すると
通算成績シートに自動的に5と3が足されて
15、8となるようにしたいのです。
ところが「絶対参照」になってしまい
上手く計算式が作れません。
同じシート上の数字を参照して同じ場所に
新しい数字を出すには
どのようにすればよいのでしょうか?
御存知の方いましたら
教えてください。

A 回答 (9件)

ピボットテーブルの「氏名」をダブルクリックし「詳細」ボタンを押します。


 自動並べ替えオプション=降順
 使用するフィールド=合計:打率
 自動表示オプション=自動
 表示=上位+10
 使用するフィールド=合計:打率
ただし、「数式」がなくて別の方法になさったそうですから、「合計:打率」の部分はないかもしれませんね(>_<)
また、これですとSheet2のピボットテーブル自体がベスト10になってしまいますから、11位以下は含まれなくなってしまいますので注意!

ちなみに、RANKという関数があります。全体の中で何番目かを返す関数です。これなんかも使えるかも。
頑張ってくださいヽ(^。^)ノ
    • good
    • 0
この回答へのお礼

すみません。遅くなりました。
大変参考になりました。
この度は度々付き合っていただき誠ににありがとうございました。

お礼日時:2004/03/20 16:45

#7です。


Sheet2のピボットテーブル内のどこか(例えばB4)を右クリックすると出てくるメニューは次のとおりです。

 セルの書式設定
 レポートの書式設定
 ピボットグラフ
 ---------
 表示しない
 ---------
 ウィザード
 データの更新
 ---------
 選択
 グループとアウトラインの設定
 数式
 順序
 ---------
 フィールドの設定
 オプション
 ページの表示

僕はEXCEL2000ですが、2002は違うのかもしれませんね。。。
それか、標準インストールでは利用できない機能なのかも。僕は初めからフルインストールだったので。

それから、ユーザー定義の「.000」というのは、最初はないんです。ユーザー(あなた!)が定義するのです!
 分類=ユーザー定義
 種類=.000
と入力します。
3割だったら「.300」、10割だったら「1.000」と表示されます。

頑張ってくださいヽ(^。^)ノ
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
右クリックの数式はどうやら私のエクセルには
ないようです。
別の形で打率など作ってみました。
「.000」は作ること出来ました。
ありがとうございます。
ご親切にありがとうございました。
不躾ですが
最後に、もう一つだけ
質問させてください。
シート2に作った
日々更新される通算成績を
シート3にスポーツ新聞の
打撃成績トップ10のような形で
作りたいと思っております。
頭の中にはイメージがあるのですが
まとまりません。
何か上手い方法があれば
教えてください。
よろしくお願いします。

お礼日時:2004/03/16 20:00

ピボットテーブル好きの僕としては、こんな方法をお勧めします。


まず、Sheet1に以下のデータが入っているとします。

日付氏名打数安打数
3月1日仁志43
3月1日清水41
3月1日二岡40
3月1日高橋42
3月1日清原41
3月1日ローズ32
3月1日江藤31
3月1日阿部31
3月1日上原30
3月2日仁志41
3月2日斉藤41
3月2日二岡44
3月2日高橋31
3月2日ペタ33
3月2日ローズ30
3月2日元木30
3月2日阿部30
3月2日桑田30

列A~列Dを選択し、「データ→ピボットテーブル・・・」
次へ→次へ→レイアウト
氏名を行に、打数と安打数をデータにドロップ
打数をダブルクリックすると「データの個数」になっていますからこれを「合計」に変更します。安打数も同様です。
OK→完了とすると、新しい(Sheet2とします)にピボットテーブルができます。
このままでは希望の形ではないので、多少手を加えます。
Sheet2のB3セル「データ」を、C3「計」と書いてあるところにドラッグしてください。ここまでやると

データ
氏名合計 : 打数合計 : 安打数
ペタ33
ローズ62
阿部61
桑田30
元木30
江藤31
高橋73
上原30
仁志84
清原41
清水41
斉藤41
二岡84
(空白)
総計6221

このような形になったと思います。さてあと一歩です。
表内のどこかを右クリックし、「数式→集計フィールド」とします。名前に「打率」、数式に「=安打数/ 打数」と入力し、追加→OK
表内のどこかを右クリックし、ウィザード→レイアウト、「合計:打率」をダブルクリックし、表示形式でユーザー定義を選び、「.000」とし「OK」「OK」「OK」「完了」

どうでしょうか、全員の打数、安打数、打率が一覧表示されましたね。最後に「名前」の▼から「(空白)」のチェックをはずすと、きれいな表になります。

Sheet1に毎日のデータを入れたら、Sheet2の表のどこかで右クリックして「データの更新」を押すと通算成績が更新されます。

頑張ってくださいヽ(^。^)ノ
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
とても役立ちました。
お願いついでに、
表内のどこかを右クリックし、「数式→集計フィールド」・・・
とありますが、
右クリックメニューに「数式」がありません・・・
それとユーザー定義に「.000」もないのですよね・・・
2002を使っているのですが
古いからでしょうか?
よろしくお願いします。

お礼日時:2004/03/16 01:43

#3です。


使っている(今問題にしている)シートの
表示-ツールバー-コントロールツールボックスをクリック。
単純な四角であるものの上にマウスをしばらく置くと
「コマンド ボタン」とコメントが出るのがコマンドボタンです。
それをクリックして、ワークシート上にマウスを移すと
+型になりますので、数センチほど右下方向へドラッグしてください。
コマンドボタンが現れます。
その四角の中でダブルクリックすると、VBE画面に飛んで、
Private Sub CommandButton1_Click()

End Sub
がでます。
その中間に、回答のVBAの中間の3行をコピペして
、回答のVBAになったことを確認してください。
ツールバーの三角定規と鉛筆アイコンをクリックして、デザインモードを抜けます。
その後シート(Sheet1)のB1に数を入れ、ボタンを1度クリックし、Sheet2のB1を見てください。
Sheet1のB1の値が加えられていくのが確かめられるはずです。
まあ出きると言うことを言いたかっただけで、普通は同一
セルに順次データを入れて何かしようとするのは、エクセルでは設計からして考えなおす必要があると言うことでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
挑戦してみました。
私には難しかったです。
これからもよろしくお願いします。

お礼日時:2004/03/16 01:44

一番無難な方法で解決されるのはどうでしょう。


下記は打数と安打数の履歴を残して、人ごとの最新の打率を表示します。
一度この通りに作られて、お気に召されましたらお使い下さい。

Sheet1のA1から右に日付名前 打数 安打
下にデータを入力します。

Sheet2のA1から右に名前 打数 安打
A2から下に名前を入力します。
B2に
=SUMIF(Sheet1!B:B,Sheet2!$A2,Sheet1!C:C)
C2に
=SUMIF(Sheet1!B:B,Sheet2!$A2,Sheet1!D:D)/B2

循環参照を利用してある計算をするという技もたしかにありますが、
今回のケースでは循環参照を避けられるのが後々いい結果になるような気がしますけれど。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考になりました。

お礼日時:2004/03/16 01:45

No.2です。



今日の成績
は今日の成績だけでは無く、日々成績をデータとして付けていってください。
そうすると、通算成績を勝手に計算してくれます。
    • good
    • 0

#2でおっしゃっているように、絶対参照の問題ではなく、循環参照となるため、うまく行かない問題です。


VBAでやっても、ぐるぐる回り計算になります。
表計算は、こんなありふれたニーズにも対応できないウイークポイントがあります。関数はデータを変えると即時的(オンライン的といいましょうか)に結果を変えてくれる良さがある反面、こう言う場合に困るのだと思います。
そこで、オフライン的に処理させれば出来ます。
オフライン的とは、エクセルを使っている人が、「操作」と言うキッカケをつくってやるのです。
sheet1にコマンドボタンを1つはりつけて、ダブルクリックすると
Private Sub CommandButton1_Click()
End Sub
が出てくるから、その中間に下記中間の3行をコピペして
Private Sub CommandButton1_Click()
x = Worksheets("sheet2").Cells(1, "B")
y = Worksheets("sheet1").Cells(1, "B")
Worksheets("sheet2").Cells(1, "B") = x + y
End Sub
とします。
これでボタンを押すと、Sheet1のB1に入れた値が、Sheet2のB1の値に加算されます。累積的になります。一度ボタンを押したこと忘れて、もう一度ボタンを押すと、もう一度加算されてしまう厄介さはあります。
残念ながら、本質問はエクセルでは「厄介なニーズ」にぶちあたったということでしょうか。

この回答への補足

御回答ありがとうございます。
教えてくれました
「コマンドボタン」
とはどのように使うのでしょうか・・・?
ヘルプにも登場しないのですけれど・・・
よろしくお願いします。

補足日時:2004/03/14 13:33
    • good
    • 0

絶対参照ではなくて循環参照と出ているんじゃないですか?



例えば、

今日の成績
A1 日付
B1 選手名
C1 打数
D1 安打数
E1 率
で、2行以降にデータを作っていったとして、

通算成績
A1 選手名
B1 打数
C1 安打数
D1 率
とかにして、
B2 =SUMIF(今日の成績!B:B,A2,今日の成績!C:C)
C2 =SUMIF(今日の成績!B:B,A2,今日の成績!D:D)
で2行をコピーして、下方向に必要なだけペーストすれば良いですね。

今日の成績にデータを入れて、
通算成績には選手名だけ入れれば勝手に計算します。

とりあえずこんな感じでいかがですか?

この回答への補足

確かに循環参照でした。
御教授頂いたのがよく分かりません。

例えば
シート1今日の成績
A名前 B打数 C安打
1山田  5  3

を入力すると

シート2通算成績
A名前 B打数 C安打
1山田  10  5

がシート2通算成績で自動的に同じセル内で

A名前 B打数     C安打
1山田 15(=5+10) 8(=3+5)

()内は私の目指している数式です。
となるようにしたいのです。
いかがでしょうか・・・?

補足日時:2004/03/14 00:33
    • good
    • 0

絶対参照が付くのが嫌なら、絶対参照を取ればいいのですよ。



計算結果が出るセルの数式バーを見てください。
おそらく、$A&1とか、なってませんか?
この$マークが絶対参照にしているって記号です。

$マークを消せば、絶対参照にはなりませんよ!
    • good
    • 0

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