• 締切済み

エクセルで串刺し集計で数字の個数を読み取りたいのですが

ひょっとしたら簡単かもしれないのですが この間から長いこと調べてみているのですがわかりませんので どなたかお教え下さい。 串刺し集計の際に 例えば 31日分のシート(小の月なら30日:30枚のシート) のA:1(シートのセル位置は31枚とも同じ)のセルに数字の0~7迄を入力し(都合で文字扱いに出来ません)その中から最終のシートに 0が何個、1が何個・・・・・・・7が何個と表示するためには 32枚目(小の月なら31枚目)のシートにどういった計算式を入れたらよろしいのでしょうか、宜しくお願いいたします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

一案ですが 1日目のシートのタブをクリック 31日(或いは30日)目のシートのタブを Shiftキー押しながらクリック 最初のシートで作業します。 1行目に行を挿入 A1セルに =IF(A2=COLUMN(A1)-1,1,"") 右へ8個フィル それぞれのセルにA2が0の場合は A1に 1 1の場合は B1に 1 ・・・ になります。全てのシートが同じ計算式が入ります。 後は、32枚目のシートに串刺しの合計でそれぞれのシートの1行目にセルを合計してみてはいかがでしょうか。 将来的には、皆さんがおっしゃられるとおりシートの構成を見直すべきです。 1日 1シート 1月 1ブック では、日を跨ぐ集計、月を跨ぐ集計で 大変厄介になります。 残念ながら簡単なものにはなりません。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

この質問だけに対して言えば、シート設計の失敗でしょう。別シートにすると、現状のExcelでは関数がそのほとんどメリットを享受できなくなり、難しくなること身にしみるでしょう。 まだしも集計は集計・統合などありますが。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_keisan_fukusu.html#kusizasi ーー 関数での答えが出ているようですが VBAででもやるほか無いと思います。 ーー 下記例では 簡単の為にSheet1からSheet5の5枚とします。 その中にはシートタブ位置的に対象のシート以外の他のシートは混じらないようにする。 Sheet1のA1ーー 1 Sheet2のA1ーー 4 Sheet3のA1ーー 3 Sheet4のA1ーー 2 Sheet5のA1ーー 1 とする。 最左のSheet1のタブをクリックし、SHIFTキーを押しながら最右のSheet5のタブをクリックする。作業グループになる。 ーー コード Sub test02() Dim t(10) Dim sh As Worksheet For Each sh In ActiveWindow.SelectedSheets x = sh.Cells(1, "A") t(x) = t(x) + 1 Next For i = 1 To 10 Worksheets("Sheet1").Cells(i, "C") = i Worksheets("Sheet1").Cells(i, "D") = t(i) Next i End Sub をVBEの標準モジュールに張り付け実行する。 Sheet1のC1:D10に 1 2 2 1 3 1 4 1 5 6 7 8 9 10 が出て、数字頻表が出来る。 ーー シート名はどういう名であろうと関係ない。 シートの順序・日付順も関係ない。 余分なシート名は作業グループに入れる指定はしないこと。 ーー 簡単なコードであるが、私としては諸所に長い経験が詰まったコードです。 そういう風に難しくなりますよということ。

kurige1949
質問者

お礼

ご提案ありがとうございました。 毎日に日報入力ですので、シート単位にした方が 運転手さんには簡単かなと思っていますが(皆さんエクセル自体 を扱うことが初めてなので)その辺はもう少し考えてみます。 VBAはなかなか歯が立たないですが、やってみようとも思っています。 なんにしてもありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

串刺しでCOUNTIF関数は使えないので奥の手です。 もしシート名がSheet1~Sheet31というように連番になっているなら 仮にA1が 2 の個数は =SUMPRODUCT(COUNTIF(INDIRECT("'Sheet"&ROW(1:31) & "'!A1"),2)) です。 もしシート名が1日~31日というように連番になっているなら 仮にA1が 3 の個数は =SUMPRODUCT(COUNTIF(INDIRECT("'"&ROW(1:31)&"日"&"'!A1"),3)) 小の月は31を30になおして下さい。

kurige1949
質問者

お礼

ありがとうございました。 早速今からやってみます、何とかなるといいんですが。 とにかく、皆さんよりのご助力ありがとうございました。

  • rin01
  • ベストアンサー率43% (33/76)
回答No.1

こんにちは~♪ 出来なくはないのですが。。 回答ではありません。。 1日1つのシートというのは、何か事情が あるのでしょうか? 出来れば、データ集計の元になるマスターシートは 1つにした方が、集計等にはいいですね。。 みやほりんさんの失敗談 ↓ 下記の参考URL もご覧ください。。 。。。Ms.Rin~♪♪

参考URL:
http://miyahorinn.fc2web.com/schooltxt/Ex060120.html
kurige1949
質問者

お礼

早速の回答ありがとうございました。 一枚のシートにならないか検討をしてみます。