- ベストアンサー
エクセルの関数について
オフィスXPを使用しています。例えば500件のシートと集計用のシート1件(すべて同一)があるとします。500件のシートのA2のセルには○か空白を入力しています。このA2のセルに○がいくつ入っているかを集計用のA2のセルに表示したいのですが、どうしたらよいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
500枚のシートの全てのA2セルにデータが入っているものとして回答します。 この場合、データの文字種が計算不能な文字種であるため、シートをまたぐ計算ができません。そこで、計算可能な数値にして計算することで解決できると思います。 以下の2つの方法のいずれかで対処されるとよろしいかと思います。 各データシートのA2セルに入力されている「○」を、数値の「1」に変換して、集計用のシートのA2セルに、=SUM(sheet1:sheet500!A2)※と式を入力するか、 各データシート同一シートの任意のアドレスの空白セル(全てのデータシートのセルアドレスは同じにする)に、=IF(A2="○",1,IF(A2="×",2,IF(A2="△",3,4)))と入力し、A2セルに入力されている「○」を、数値化する。例としてB2セルにその式を入力したとしましょう。その上で、集計用シートに=SUM(sheet1:sheet500!B2)※とすれば、上記同様に計算できます。 ※sheet名は任意で構わない。集計をしたいシートの最初(左端のタグ名)から、最後(右端のタグ名)の名前を記述 最初の方式は、データシートの入力値を改変しても構わない場合、最後の方式は改変してはまずい場合です。 最初の方式で構わなければ、エクセルの編集→置換で、出てきたダイアログの「検索する文字列」を○、「置換する文字列」を1にし、検索場所を「ブック」にし、「全て置換」ボタンを押します。 上記の方法の場合、すでに入力されている○や×を用いて計算している場合に、式に入力されているその文字まで置換されてしまうので、それを防ぎたい場合は入力が面倒ですが、最後の方式で行うのがよいでしょう。
その他の回答 (4)
- zinchan
- ベストアンサー率49% (97/197)
>セルの○は、すでに他を参照する関数を使用してあるので そうであれば、A2セルの記号を数値に変えることにより他に(悪)影響が出るのを避けるため、データそのものを変えるよりも、他のセルにデータを変換した数値を出すやり方が賢明かも知れません。 A2の結果を参照する関数が量的に少なければ、セルA2等の○を1に変更しても、正しい結果が出せるように参照している関数を改変するか、回答No.4で示した最後の方式を採るかどちらか楽な方法を採用するのが最終的に早い解決だと考えます。 >できれば書式の設定で結果が1であれば○を表示する方法とかはないのでしょうか? 申し訳ないながら意味がよく理解できません。 計算結果として1であっても、表示上は○を表示したいということでしょうか。 とすれば、これは意味がないと思います。先にA2の結果を参照する関数が「○」や(恐らく「×」も)の結果を利用している以上、表示を○にしても結果は1なのですから、その関数は正しい計算ができません。また、そのための改変作業労力は、先に示した方法よりもっと面倒だと思います。 私の推測ですが、恐らくあなたのデータシートには、多数の類別変数(数値でない、他と区別するための記号群)や、順位変数(数値だが、値は相対的な順位を示す記号群)によるシートがあるのでしょうが、データが並んでいる同じ行(列)に平行して、No.4の最後に示した式を参考に入力してコピーをかけ、その結果を集計シートに反映させるやり方がやはり面倒が最も少なそうです。 今後、ご質問のようなブックを作成する際には、記号よりも数値で入力するやり方をお薦めします。またはアクセスを利用できるのであれば、アクセスで集計されるのがよろしいかと思います。 ちょっと冷たい言い方だったかも知れませんが、責めているわけではありませんのであしからず。 ご検討のほど、よろしくお願いします。また、解決されるよう、お祈りいたします。
- imogasi
- ベストアンサー率27% (4737/17069)
500件が1シートにあるなら、普通の問題です。 =COUNTIF(Sheet1!A1:A7,"○")("=○"でも同じ) Sheet1からSheetXまでのA2セルに円があったりなかったりの場合の円の数を数えられるか。 私がSheet1、Sheet3のA1に7をいれてSheet4に =COUNTIF(Sheet1:Sheet3!A1,7)を("=7"でも) 入れてやって見ると、#VALUE!となりました。 エクセルの関数式は、引数に1シートを越えて指定できるかどうかは、必ずしも統一が取れていないようで、判別がむつかしいように思います。=SUM(Sheet1:Sheet3!A2)や=COUNT(Sheet1:Sheet3!A1)はOKでした。 やり方が悪い・間違っている場合は、ご免下さい。 VBAでやるのは別にして、適当な関数はあるのかな。
- lawson
- ベストアンサー率44% (29/65)
異なるシートのセルをどうやって参照するかは 忘れてしまいました。 そういうのは、必要があったら既存のファイル を見て真似するだけなので、記憶にないです。 なので、同一シート内でと、 話を単純化して回答させてもらいますが。 countif()を使えばよいと思います たとえば、 F12あたりに、 =COUNTIF(A1:E12,"○") というような式をいれておくと、 A1:E12までの四角のなかで ○がいくつあるかを表示してくれます。 いろいろ試して見てください。 以上
- HageoyaG
- ベストアンサー率43% (171/395)
=COUNTA(最初のシート名:最後のシート名!A2) ですが、「500件」が「500枚のシート」という意味でしたら、機能するかどうかはちょっとわかりません。
補足
回答ありがとうございます。ただし、セルの○は、すでに他を参照する関数を使用してあるので、できれば書式の設定で結果が1であれば○を表示する方法とかはないのでしょうか?