エクセルのシートでデータ管理をしようと思います。
その時便利なのが、オートフィルタですが、

   SUBTOTAL関数「例:=SUBTOTAL(9,A1:A100)」

を設定した場合、フィルタを操作すると、必要な数値が返ってきます。ところがというか当然というか、

   COUNTIF関数「例=COUNTIF(B1:B100,"○")

ではだめですよね。どうにかして関連づける方法はないでしょうか。
または、その他に同様な効果が得られる方法はありませんか。

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

A 回答 (3件)

回答がありませんね。


質問の意味は、
  例えば、101行目にSubtotalを置いていればフィルタをかけたときに選択されたものだけが集計される。
  しかしCountifのように条件付きの集計はできないので代替手段は?
ということでしょうか。

多分、Subtotalの集計方法はフィルタで絞られたものを対象にするので、さらにそれを絞り込むことは難しいと思います。

>その他に同様な効果が得られる方法はありませんか
ということなので、機能が無ければ作ればいいという事で下記のユーザー定義関数を書いてみました。
フィルタで絞る時は、該当しない行は自動的に非表示になるのでそれを利用しています。

使い方は、COUNTIF(B1:B100,"○") と同じようにsubtotal_countif(B1:B100,"○") とします。

標準モジュールに貼り付けます。
Public Function subtotal_countif(rgSelect As Range, moji As String)
  Dim rg As Range 'セル
  Dim cot As Long 'カウンタ

  For Each rg In rgSelect
    If Rows(rg.Row).Hidden = False Then '表示されている行だけ対象にする
      If rg = moji Then
        cot = cot + 1
      End If
    End If
  Next
  subtotal_countif = cot
End Function
    • good
    • 1
この回答へのお礼

ご丁寧かつ専門的な回答ありがとうございました。質問の内容が陳腐(?)で誰も相手にしてくれないのかと心配していました。(;_;)

エクセルを自己流で使っておりましたので、エクセルをドラエモンの4次元ポケットのように思いこんでいて、ついそのような質問を…。
しかし、nishi6さんの回答を見るともしかしてエクセルは…。

ところで、標準モジュールっていうことは、VBAですよね(!?)。参考書片手に頑張ってみます。結果はまた後で連絡します。



>質問の意味は、
  例えば、101行目にSubtotalを置いていればフィルタをかけたときに選択されたものだけが集計される。
  しかしCountifのように条件付きの集計はできないので代替手段は?
ということでしょうか。

その通りです。分かってもらってうれしいです。

お礼日時:2001/07/28 13:07

質問を理解するほうに気が行って、回答に手を抜いてしまいました。

すいませんでした。

(1)シートのメニューから、ツール→マクロ→Visual Basic Editor でVBE画面に移ります。
(2)VBEメニューで、挿入→標準モジュールで標準モジュールを挿入します。
(3)そのコードウインドウ(現れた広い場所です)に下記コードをコピーし貼り付けます。
(4)ワークシートに戻り、COUNTIFを表示したかったセルに
  =subtotal_countif(B1:B100,"○")
と入力します。

>エクセルをドラエモンの4次元ポケットのように思いこんで・・・・

ワークシートの機能だけでもいろんなことが可能と思います。ただ、関数を組み合わせていったりすると、行入力のため分かりにくさが問題になります。それに、手順を複雑にしてしまうと、手順復元が困難になったり、’あの人しかできない処理’になったりしてしまいます。そのためにVBAを使ったりもしています。

『4次元ポケット的』という意味を『シート上のデータやExcelが扱えるのものに対して』すれば、VBAを使えば、どらえもんになれると思っています。自分は何をしたいかを、はっきりつかむことが大事でしょう。本もたくさんありますし、がんばって下さい。
    • good
    • 3
この回答へのお礼

手順まで示していただき大変ありがとうございます。
前回の答に基づきやってみました。(; ̄Д ̄) …で、できました!!
意味はよく分かりませんが、確かに私の意図したとおり関数が働きます。ありがとうございました。

お礼日時:2001/07/28 22:31

B列に入る値が、○と空欄だけでしたら


SUBTOTAL(3,B1:B100)
で問題なしです。

B列に○以外にも文字が入る場合は、隣の列(例としてC列)などに非表示列を作って○だけ抜き出してはいかがでしょうか?
そうすれば、上記と同様にSUBTOTAL(3,C1:C100)で対処できます。

非表示列を作るのが嫌な場合はマクロかな~
    • good
    • 1
この回答へのお礼

ありがとうございました。質問の内容が陳腐(?)で誰も相手にしてくれないのかと心配していました。(;_;)
早速試してみます。結果はまた後で連絡します。

お礼日時:2001/07/28 12:44

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qpdfをtifに変換できるソフトありますか?

pdfをプリンタで出力した紙をスキャナーで再度tifに変換すれば、
tifは作成できますが、精度は落ちます。
pdfをtifに変換できるソフトありますか?

Aベストアンサー

pdfforgeの「PDFCreator」というソフトでできると思います。
http://gigazine.net/index.php?/news/comments/20081018_pdfcreator/

QExcelでの表編集でC1に =IF(A1="",B1,A1)

Excelでの表編集でC1に =IF(A1="",B1,A1)
と以前文字データのある列A1、B1、2つからそれぞれ穴あき
を補いc1に表示する式=IF(A1="",B1,A1)を教えていただいたのですが
2列まではこの式で行けるのですが3列以上に対応させる記述が
分かりません。
3列以上の表示を一列にまとめる式を教えてください。
お願いします。

Aベストアンサー

条件が良く判りませんが?

セルB1が空白のとき、セルC1をセルD1に表示
という条件を追加すると
=IF(A1="",IF(B1="",C1,B1),A1)

こんな感じですが、イメージと違う場合は補足してください。

QPDFファイル一括変換ソフト

拡張子がtifのファイルが5個あります。
5個のtifファイルをまとめて1個のファイルとしてPDFファイルに変換するソフトはありますか。
今現在AdobeAcrobat5.0はあります。
これだと1個ずつファイルでは変換できます。
まとめてができません。
教えてください。

Aベストアンサー

エクスプローラーで変換したいファイルをまとめて表示して、変換したいファイルを全て選択します。
その後に右クリックで印刷を選ぶと写真の印刷ウィザードが出てきます。あとはウィザードに沿ってやれば大丈夫かと思います。
最初にファイルを選択するときに、別フォルダにばらばらにあるとダメだと思いますので、その場合はどこかのフォルダにまとめるとよいと思います。

私はwin XP、AdobeAcrobat5.0です。

QSUMPRODUCT($A$1:$A$10,$B$1:$B$10)とSUMPRODUCT($A$1:$A$10*$B$1:$B$10)

エクセルのSUMPRODUCT関数についてお尋ねします。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?

Aベストアンサー

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。

こちらが、本来の使い方です。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。

では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)

とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)

ところが、こちらは、

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)

$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。

ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算...続きを読む

QPDFをtifかjpgに

PDFファイルをTIFもしくはJPGに変換したいのですが、何か良いフリーウェアまたはシェアウェアはありませんか?
よろしくお願いいたします。

Aベストアンサー

過去に同様に質問があるようです。
http://www.okweb.ne.jp/kotaeru.php3?q=283641
http://www.okweb.ne.jp/kotaeru.php3?q=556742


私は以下の手順で行なっています。

(1)PDFを1ファイル1ページに分割します。
 iTextFrontもしくは、SepPDFが便利です。
iTextFront http://www.aurora.dti.ne.jp/~ujihara/
SepPDF http://www.ne.jp/asahi/foresth/home/

(2)PDFから画像へ変換します。
GhostScript+XnViewで一括変換か、GhostScript+GSviewが便利です。
http://www.cs.wisc.edu/~ghost/
http://perso.wanadoo.fr/pierre.g/

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QtifからPDFに変えたのを印刷すると一部消えます

パソコン初心者です。

300個ほどのtif画像(設計図)を変換し、1つのPDFファイルにしました。

変換の仕方は、
印刷時に、「プリンタドライバはPDFを選択」にして印刷する→PDFファイルができあがる
といったやり方です。

なぜかノイズが入った画像は、そこだけもう一度やり直してacrobatで上書き・・・と苦労しました

それを印刷すると、上から1/4くらいの範囲に、縞状に印刷されない部分があるのです

100ページ出すとほとんどそうなる場合もあります。
どのページにトラブルがでるか予想できません。

どうかよろしくお願い致します。

Aベストアンサー

PDF変換用プリンタドライバでは、結構問題が起きることがあります。
特に、TIFFのような柔軟なファイルフォーマット+CAD出力では
起きやすいのかもしれません。
PhotoShopがあるなら、それで開いて 別名で保存 で PDFにするとか
まとめてやりたいなら
http://www.softinterface.com/Convert-Image-To-PDF%5CForeign%5CJP%5CCITP-JP.htm
のような専用アプリを使うとかでしょうか。
(これで問題が起きないと言う保証はありませんが)
1ページずつ出力された PDFを 一つのファイルにまとめるのは
http://www.ujihara.jp/ConcatPDF/ja/
などで出来ます。

Q【EXCEL】数式=SUM(A1*B1+A2*B2+・・・+A100*B100)を簡略化したい

お世話になります。

今Excelで、A1~A100とB1~B100まで数値が入っています。
セルC1に「=A1×b1」、C2に「=A2*B2」…C100に「=A100*B100」と入力しました。
そしてセルC101に「SUM(C1:C100)」と入力して合計を出しました。
(実際はもっと複雑な計算なのですが、説明の為に簡略化しています)

そうすると、計算結果セルが多く発生するためファイルサイズが莫大になってしまうのと、それを数千行×6列以上を一気に計算するとXPのリソースが足りないと出て計算できません。
なので2~3列ずつ何回も数式コピペを繰り返すことになっています。

そこで【別セルに掛け算をしてから全部SUMで足す】のではなく【1つのセルに掛け算とSUMを組み込む】という事を考えて
=SUM(A1*B1+A2*B2+・・・+A100*B100)を
を入力しようとしたのですが、数式が長すぎて四苦八苦です。

この式、なんとか簡略化できませんか?

Aベストアンサー

積の合計なら
=SUMPRODUCT(A1:A100,B1:B100)
でいいのでは?

QPDF変換ソフトの開発

PDFへ変換するソフトは世の中にたくさんあるのですが、どのようにして開発しているのでしょうか?

adobeからsdkを購入して開発しているのでしょうか?それとも、フリーの何かがあるのでしょうか?

フリーで環境が整うのであれば作ってみたいと思っています。
.tifファイルをPDFへ仮想プリンタを介さずに、バッチ処理できるもの考えています。

よろしくお願いします。

Aベストアンサー

> adobeからsdkを購入して開発しているのでしょうか?
> フリーの何かがあるのでしょうか?

これですかね?本家が無償で公開してます。
http://www.adobe.com/devnet/pdf/pdf_reference.html

リンクはWikiで見つけました。
http://ja.wikipedia.org/wiki/Portable_Document_Format

Qエクセルの数式で、COUNTIF(A1:A100,">""") 

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2224824

の関連質問です。

表A1:A100にある、各セル内の数式で求められた計算結果が文字列の場合、その数を調べるには、

=COUNTIF(A1:A100,">""")

で、各セルの計算式の答えが "" 以外の文字列の数を返してくれるようです。(数値や空白セルはカウントされません。)

非常に便利なのですが、ちょっと腑に落ちないのは、  >""  って、""より大きいということですよね?
しかし文字列は数字とちがい大小はないのではないでしょうか?

もう一点疑問です。
ためしに、=COUNTIF(A1:A100,">=""")  としてみました。
今度は、  >=""  ですから、""も含むということになるはずですよね?
ところが答えが  ""  となるものをカウントしません。

不思議でたまりません。
よろしくお願いします。

Aベストアンサー

#1 の回答前半部は、

  ”文字列と文字列”の比較に">"や"<"が使えるか?

についてのコメントです。結論として #1 で説明したとおり”使えます。”

  ・論理式("A" > "B")  --> False
  ・論理式("A" < "B")  --> True
  ・論理式("A" > "")  --> True
  ・論理式("1" > "A")  --> False (文字列の数字と文字列)

ところで、Excel のワークシート上ではユーザーの利便性のため、本来
型不一致でエラーとなるはずの論理式(1 > "A") で False が返ります。(数値と文字列)

このおかげで、ユーザーはデータ型について普段意識せずに済むわけ
ですが、これはイレギュラーで、True にならないなら False 、、と単純
に評価しているに過ぎません。本来プログラムの世界では、

  ・論理式(1 > "A")   --> 型不一致でエラー

で比較不能です。比較する以前にエラーになってしまいます。ここで、
COUNTIF 関数も当然プログラムが提供している機能だということに注目
して下さい。

> ... =COUNTIF(A1:A100,">""") でなぜ数値は除外されるのでしょうか?

数値がカウント除外されているのは、COUNTIF 関数が "" を長さ 0 の
文字列と解釈しているのであれば、文字列と数値の比較のように比較不能
でエラーとなる場合には、カウントしないように実装されているから
だと思います。

=COUNTIF(A1:A100,">""")
=COUNTIF(A1:A100,">=""")

この両者がなぜ同じ結果を返すかについては、=COUNTIF(A1:A100,"ABC")
で ABC と入力されたセル数を返すところを見る限り、文字列の場合は、
イコールを書かなくても補完されるようです。

そのため、イコールは書いても書かなくても結果が同一になるのでしょう。


COUNTIF 関数の第 2 引数である条件部は、文字列で指定します。

内部的にどのように処理されているか正確なところは、COUNTIF 関数の
作成者にしか分からないのですが、比較を行うためには、この文字列で
渡された条件部を論理式に展開する必要があります。

その過程で、数値化できないものは文字列として扱う、としているよう
ですね。

したがって、

> =COUNTA(A1:A100)-COUNT(A1:A100)

は、次のように書いても OK みたいです。

=COUNTIF(A1:A100,"=*") ... イコールはあってもなくてもOK

以下は文字列以外のセルです。ブランクセル+文字列以外のデータがあるセル

=COUNTIF(A1:A10,"<>*")


> =SUMPRODUCT((A1:A100>="")*1)ですと、式が入っていない空白セルも
> カウントするようです。

すみません。これだとブランクセルを含めてしまいますね。その通りです。

#1 の回答前半部は、

  ”文字列と文字列”の比較に">"や"<"が使えるか?

についてのコメントです。結論として #1 で説明したとおり”使えます。”

  ・論理式("A" > "B")  --> False
  ・論理式("A" < "B")  --> True
  ・論理式("A" > "")  --> True
  ・論理式("1" > "A")  --> False (文字列の数字と文字列)

ところで、Excel のワークシート上ではユーザーの利便性のため、本来
型不一致でエラーとなるはずの論理式(1 > "A") で False が返ります。(数値と文字列)

...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報