- ベストアンサー
エクセル OFFSET関数での行数指定の方法
bunjiiの回答
- bunjii
- ベストアンサー率43% (3589/8248)
>例えばテーブルの行数(可変)がF1セルに入っていたとして、{}部分を置き換える表記はあるのでしょうか。 「行数がF1セルに」という考え方に拘ると更に分かり難い論理を組み立てなければならなくなります。 {1,2,3,4,5}は1行×5列の数列を表しています。 セル番地から導くと COLUMN(A1:E1) → {1,2,3,4,5} となりますので、7行分にするためには COLUMN(A1:G1) → {1,2,3,4,5,6,7} のようにしなければなりません。 代案といて次のような案がえ方をする分かり易いかもしれません。 TRANSPOSE(ROW(A1:A7)) → TRANSPOSE({1;2;3;4;5;6;7}) → {1,2,3,4,5,6,7} TRANSPOSE関数は行と列を入れ替えるためのもので行数を増減するときに引数の列数を増減する場合に考え易くするために使えます。 元の質問である「A2からE6の5X5のテーブルに数値が入っていた時に、50以上の数が1つでも含まれる行の数カウントする」に対して別解の数式を提言しましたが、それは参考にされたのでしょうか? =SUMPRODUCT((MMULT(INDEX((A2:E6>=50)*1,0),ROW(A2:A6)/ROW(A2:A6))>0)*1) この数式では中間の配列値が見えるので分かり易いと思います。 比較対象の行数が増減したときはINDEX関数で前処理した配列数の範囲を変更するだけで良いことになります。 但し、列数が増減したときはMMULT関数の第2引数である数列 ROW(A2:A6)/ROW(A2:A6) の範囲も変更しなければなりません。これは今回の質問で固定配列値の置き換えと類似する疑問点になるかも知れません。 しかし、OFFSET関数を含む数式では計算途中が「可変」となって様子が分からないので内包する関数での中間結果が見える数式の方が理解し易くなると思います。
関連するQ&A
- エクセルでの行数カウント
エクセルで A列 B列 1行 ●1 C ⇒カウント 2行 X1 D 3行 ●2 E 4行 X2 F 5行 ●3 C ⇒カウント 6行 ●4 D 7行 X3 E A列で「●」を含み、なおかつB列で「C」である行の数(例でいうと「2」)を求める 数式を教えてください。 ちなみに A列 B列 1行 ● C ⇒カウント 2行 X1 D 3行 ● E 4行 X2 F 5行 ● C ⇒カウント 6行 ● D 7行 X3 E であればA列が全く「●」に等しいものでカウントする場合は、下記の関数で計算できます。 {=SUM(IF(B1:B7="C",IF(A1:A7="●",1,0)))} COUNTIF関数では、"●*"のように「任意の文字」を指定することが可能ですが、IF関数の 中ではできないようです。
- ベストアンサー
- オフィス系ソフト
- EXCELで行数が変わる場合のカウントについて
「EXCEL2010」で、行数が変わる場合のカウント方法について 教えて下さい。 例の場合で説明すると、大分類「AAA」「BBB」毎に「中分類」の数と「有無」の 数をカウントしたいのですが、「AAA」と「BBB」の行数が増減してしまいます。 中分類 有無 添付イメージでは「AAA」 5 3 「BBB」 3 1 カウントする時の範囲を、可変にすることは可能でしょうか。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルで、条件を指定した行数のカウントについて
エクセルにて、条件に合致する行数のカウントを行うことは出来ますでしょうか。 添付画像のようなエクセルファイルにて、各日毎に「AAA」を含む行は何行あり、「BBB」を含む行は何行あるかをカウントしたいです。 添付のエクセルであれば、A列が「10月1日」でB列に「AAA」を含む行は○行という条件でカントが出来れば実現可能とは思いますが、 こういったカウントの仕方がそもそもエクセルで出来るのかどうか知りたいです。 もし、エクセル以外の方法で可能なのであれば、その方法も教えていただけるとありがたいです。
- ベストアンサー
- その他MS Office製品
- エクセル、行数をカウントしたい。
エクセル初心者です。 よろしくお願いいたします。 エクセルでこのような表を作っています。 A B C 1 10 15 2 20 3 10 4 15 5 10 6 10 10 7 8 この時、データの入っている行数をカウントしたいのです。 上の例では 「6」 です。 途中に空白の行はありません。 A列、B列にはどちらにも数字が入る場合と、どちらかにしか 入らない場合があります。 なので COUNT は使えないですよね? 今まではデータを入力後、下の空白の行を削除し、C列で COUNTBLANK として求めていたのですが、表の長さ(行数)が一定でないため、 体裁が悪くなってしまっていました。 希望としては。 最終行のC列に「終了」などと入れると、その文字列を判別 してくれて、それより上の行数をカウントしてくれる。 または 例えば OR を使って、A列B列どちらかにデータがある 場合のみ、カウントしてくれる。 こんなワガママなことができたら、と思っております。 補足が必要ならばいたします。 それと、遅くなるかもしれませんが、お礼は必ずさせていただきます。
- ベストアンサー
- オフィス系ソフト
- Excel 関数でcountifの複数条件
Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。
- ベストアンサー
- オフィス系ソフト
- Excel OFFSET関数とCOUNTA関数
A B C D E F G H I 1 ABC商会 合計 9,200 2 3 4 連番 出荷日 型 部品代 製品代 合計 5 1 10 aaa 1,000 1,850 2,850 6 2 12 bbb 650 900 1,550 7 3 18 ccc 800 2,000 2,800 8 4 30 ddd 500 1,500 2,000 9 10 合計 2,950 6,250 9,200 契約者毎にA1:F10ような集計表を作成しており、5行目以降行は追加されていくので、 可変の表になります。 各契約者集計シートのPrint Areaをコピーし、A1セルに貼るとG1、H1、I1に契約者名と 合計がABC商会 合計9,200と表示できる上記のような表になるようにしたいと思っています。 関数で対応したいのですがうまくいきません。 =VLOOKUP(H1,OFFSET(C4,0,0,COUNTA(C:C)-4,4),2)ではエラーにはなりませんが、合計を 表示できませんでした。 また、他の契約者集計シートのPrint AreaをA1セルに貼ると エラーになります。 どうかご教示お願いいたします。
- ベストアンサー
- その他MS Office製品
- Excelで入力のある最大行数を取得できますか?
こんばんは。 Excelの関数で以下の値を取得できますか? 行は可変です。 行を追加して、行に入力のある時、 その行の行番号を知りたいのです。 やりたいことは D1の位置にA1からAnまでの合計を 入れたいのですが。 D1=sum(a1:??) ??に関数にて入力のある最大のn番目を取得できれば できるきがするのです。 A : B:C:D 1:100: : :ここにA1からAnまでのSumをいれたい。 2:150: 3:80 n:100 お分かりの方宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- この場合の関数を教えてください。IF関数とCOUNTIF関数?
A B C D F G 1 12300 2 9800 3 14500 上記の様な表($a$1:$d$3) がある時、 B1 ◎ D1 △ F1◎ C2◎ F2△ B3△ D3◎ F1 に◎を入れた時に、 もし、A列の値が10000より大きいなら(注)、範囲$a$1:$d$3の◎の数を数え結果をG1に2と表示させたいです。(F2に△と入れたら2と表示) (注) 1行目は、12300(A1)なので1行目はカウントの範囲。 2行目は、9800で10000より小さいのでカウントの範囲から外れる。 3行目は、14500はカウントの範囲。 2行目の◎(C2)はカウントされないようにするには、 G1にどのようなCOUNTIFの関数を入れればよいのでしょうか? いつも教えているので、考えたのですが? =IF(A1>10000,COUNTIF($B$1:$D$3,F1),"0")では、間違いとは気づいたのですが? (A1>10000が間違い)どの様にして良いか解りません。 どなたか教えてください。宜しくお願いいたします。 (見にくい表で申し訳ありません)
- ベストアンサー
- オフィス系ソフト
- エクセルの行数カウントについて質問です。
エクセルの行数カウントについて質問です。 A列に数千行文字が入っています。 a1には、Z001書いてあります。 A2以降には、Z002と記入してあるセルがあるまで8桁の文字列が記入されています。 (Z001~Z002までは毎回行数が変わります。) Z002の次のセルには、またZ001と書いてあるセルがあり、同じようにZ002があるセルまでデータが入ってます。上記のような内容が数千行続きます。(Z001~Z002は毎回違います。) 8桁の数字のみを関数でカウントしたのですが、全部の数字の合計になってしまい、 現在は、マウスでZ001からZ002までを選択して、右下に書いてある行数を書き写しています。 このようなデータの行数をカウントするのによい手段はないでしょうか? 説明があまりうまくないかもしれませんが、よろしくお願いします。 z001→このような感じです。 1112g678 z002 z001 1453t67a 22222a38 Z002 z001 12578978 z002
- ベストアンサー
- オフィス系ソフト
- EXCELの関数について
EXCELで以下の事をしたいのですが、できますでしょうか?もし質問の意味や条件が分かりにくければ追加で説明させていただきます。 A B C D E 1 1 2 1 3 1 この場合に1とカウントする。(A~Eのどこでもよいが、1~3行目のすべてに1が1つずつ入れば1とカウントする。) A B C D E 1 1 2 1 1 3 1 1 この場合に2とカウントする。(A~Eのどこでもよいが、1~3行目のすべてに1が2つずつ入れば2とカウントする。ただし以下のB1のマスのように2と入力されていれば1行目に1が2つあるという計算で、2とカウントする。) A B C D E 1 2 2 1 1 3 1 1 このような事が可能でしょうか?よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
詳しいご説明、ありがとうございます。 前回質問ではbunjiさんのSUMPRODUCT(MMULT())方式でうまく言ったのでBestアンサーにさせていただきました。一番わかりやすい数式でした。ただ質問のあとで、A君~E君の5×5の行列にF列として1列×5行の有効無効フラグ列を追加して、そこの対応する行のセルが1である行の数のみをカウントするというようにする必要がある事がわかりました。この時にSUM(IF(COUNTIFS())方式のほうが複数条件を並べられるので良いのかなと思ってこの質問をしたのです。 しかしながら、みなさんから回答はもらったのですが、COUNTIFS関数を使って {=SUM(IF(COUNTIFS(OFFSET(A1:E1,ROW(A1:A5),0),">=50",OFFSET(F1,ROW(A1:A5),0),1)>0,1,0))}とやっても#VALUE!となってしまう事がわかり、結局うまく行っていません。 SUMPRODUCT(MMULT())系のほうで同じような事(複数の条件をつける)はできますでしょうか。 なにかだらだらした追加質問になってしまい申し訳ありません。