エクセル範囲の代入

このQ&Aのポイント
  • エクセルの特定のセルに入力された範囲を別のセルの関数式に用いる方法について教えてください。
  • 25シートにわたるエクセルの表において、項目ごとの区分の数や種別ごとの数を自動的にカウントしたいです。
  • 範囲式部分を抜き出してCOUNTIF関数に代入する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル 範囲の代入

あるセルに入力された「範囲(C10:C13など)」を 別のセルの関数式に用いることができませんか? 具体的には、 A列:項目番号 B列:区分 ※A列の項目番号が入った行のB列には、項目名が入り、C以降は空白。 C列:種別 D列:名称 E列:詳細 ※B列の区分が入った行は、A列は空白・C~E列に各入力があります。 といった表が25シートあります。 項目毎にいくつの区分をもっているか・各種別がいくつづつかを カウント式で表記を 手作業になってしまいましたが、 ひとまず 25シート全ての A列に項番の入った行のF列に 項目毎の区分数を COUNTAを使って表示させてみました。 そこから範囲を抜き出し B列の区分毎のカウントを、COUNTIFを用いて (例えば、項番1の「A」はいくつか・「B」はいくつか、項番2の「A」はいくつか・「B」はいくつか・・) を出したいのですが・・・うまくいきません。 →F列に代入した式から、範囲式部分(例えばC14:C36・・・)をG列に抜き出し、  それをCONUTIFに代入できないか? というものです。 もちろん、別の方法があれば上記のやり方に こだわりはありません! 知識不足につき お手数とは存じますが、ご教示いただけますと助かります。 よろしくお願い致します。

noname#228034
noname#228034

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

あ、それともう一つ二つ。 とりあえず、A列「項目番号」は昇順で並んでいるのかな? という疑問を呈しつつ。 私の回答には直接影響しませんが(汗)。 一つ目、これは構成の・・というか考え方の転換なのですが、  A列に条件付き書式、数式を使用して~~ で、   式(A2セル):=A1=A2   設定する書式:文字色=背景色(通常は白?) を設定し、入力されているけど見えない状態にしてやれば COUNTIFS関数一発でいけますね。 2007以降をお使いであれば、という条件が付きます。 で・・集計についてはピボットテーブルで考えると面白いかもですね。 前の回答の「作業1:G2:=IF(A2="",G1,A2)」だけを作って   (A列は昇順に並んでなくてもOKですよ)、 A:G列を基にピボットテーブルを作成。 ウィンドウ右側にフィールドリストがでますので、   ・作業1 ⇒ 行   ・区分  ⇒ 行   ・種別  ⇒ 値  ※データの個数/種別 と表示されます。 にそれぞれドラッグ・ドロップしてやると、添付のように出来上がります。 詳細は「ピボットテーブル」で検索すると色々出てきますから、 ご興味がおありなら別途お調べください。 なお、A列に条件付き書式作戦で行くなら、作業列は不要ですね。 見えなくてもデータは保持してますから。

noname#228034
質問者

お礼

なるほど・・・ 同じ行に 項番と区分が無いので、ピボットは思いつきませんでした。 確かに、すぐ横に答え(出したい値)が無くても良いので、ピボットで出してしまえば簡単でしたね。 「こう!」と考え出すと、一人ではなかなか別の発想に行きつかないので、参考になりました。 ありがとうございます!!!

その他の回答 (2)

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

表の作りが良くないですね。 とは言え、今更変えられないなら各区分に項目番号を振るための作業列を作っては? 添付の図の例ではB列を作業列として使い、B3セルに↓の式を入れ、下にコピーしています。 =IF(D3<>"",MAX(A$1:A3),"") こうしておけば、項目番号:1で区分が「区分A」の数をcountifs関数で求められます。

回答No.1

例えば・・ごく単純に解りやすい関数で いわゆるステップバイステップで考えてみましょうか。 前提として、1行目に表の項目名(項目番号・区分・・)があり、 2行目からデータ行開始、としています。 表外のどこでもいいので(とりあえず、G列にします)、   G2:=IF(A2="",G1,A2) として、行方向にフィルしてやると・・どうでしょう。 おそらく、G列が「項目番号」で満たされると思われます。 これを、「作業1」と考えます。 続いてH列には   H2:=IF(B2<>"",G2&"-"&B2,"") として、項目番号&区分の「作業2」を作りました。 「区分が空欄」のデータ(行)は空白を返すようにしています。   ※最終的にはこの列を数えます。 I列は   I2:=IF(COUNTIF($H$2:H2,H2)>1,"",H2) 起点の$H$2セルを絶対参照し、 終点であるH列自行セルを相対参照で追いかけるのがポイントです。 簡単に言うと 「自分の行より上に、自分と同じデータが(自分を含めて)2件以上あれば」 つまり、「自分のデータが既出なら」空白を返す、という感じです。 これで重複を非表示にした「作業3」ができました。   ※発生し得る「項目番号&区分」をあらかじめリストアップできるなら    「作業3」を飛ばして次のステップにいけますね。 「結論」のJ列   J2:=IF(I2<>"",COUNTIF(H:H,H2),"") として、H列(作業2)全体にCOUNTIFして完了です。 I列が空白だったらJ列にも空白が返ります。 あとはこれを、例えば「フィルタ」などで空白を消してやれば スッキリしますね。 以上、馴染みの浅い関数は使わずに出来ますよ。 ただし、作業列は勘弁してくださいね。 非表示にしておけば見えませんから(汗)。 の例でした。 ・・・難しい関数をややこしく使えば一撃かもしれませんが、 私はややこしい長い式は不得手なので、それは他の方にお任せします(笑)。 VBAを使ってもそんなに難しくない案件かもしれませんが、 そこまでやる必要もあまり無さそうかなと思いますので、 私は積極的にオススメはしません。 後々の引継ぎやメンテナンスを考えると、 簡単な仕組みの方が良いですよ、きっと。

noname#228034
質問者

お礼

なるほど・・・ 一気に済ませようとするのではなく、段階を踏んで 徐々に答えに近づけていく・・・ということですね!? それならできそうです。 ありがとうございます!!

関連するQ&A

  • 《エクセル2000》条件にあった行のみ、数字の個数をカウントする?

    皆様、こんにちは。 A1~B20の範囲に数字と空白が混在しています。 「A列に数字が入っている行のみ、B列に入っている数字の個数をカウントする(A列に空白が入っている行はカウントしない。A列に数字が入っていてもB列に入っていなければもちろんカウントしない)」 …という式は作れるでしょうか。 合計はSUMIFを使えばいいのですが、同じ式をCOUNTIFには流用できないんですね(困惑)。 (↑これも以前ここで聞いて、教えて頂いたのですが) どうかどうか、よろしくお願いします。

  • エクセル関数について

    質問です。下記のようなデータ管理をしているものがあり 集計を出したいのですが、うまくいきません。 1行目 A列   B列  C列 2行目 商品ID  商品名 商品名2 3行目 111   りんご   4行目 222   みかん  愛媛 5行目      すいか   6行目 222   みかん 7行目 444   いちご  熊本 8行目 空白予備列 9行目 空白予備列 10行目 空白予備列 条件:C列商品名2が入っていないもので A列商品IDが入っているものだけの数もしくはA列商品IDが入っていないものの数をカウントしたいのですが全セルを指定すると、空白予備列の空白までカウントされてしまいます。なので、条件としてはB列商品名が入っていてA列商品IDが入っているものだけの数もしくはA列商品IDが入っていないものの数をカウントしたいのですが、 何か良い方法はありますか? 色々やってみたんですがなかなかうまくいきません。 空白予備列を作っているのは今後どんどん増えていくので その為にいちいち範囲指定を行うのは面倒なので、 上記で出来る方法があればその方法でやりたいです。 どうか御願いします。

  • エクセルで全ての範囲で同じ値がある場合に抜き出す。

    エクセルで指定範囲のセル,例えば、範囲「A」A1~A3、範囲「B」A10~A15、範囲「C」A20~A25, これらそれぞれの範囲内にあるセルの値が全ての範囲に同じ値が入ってる場合、その値を抜き出してB列に表示する。 A 4番 11番 16番 B 4番 15番 7番 11番 7番 C 4番 11番 16番 5番 6番 上記の様にA列にデータがあります。この場合全ての範囲にあるのは。4番と11番なので、B列に4番と11番を縦に並べる。 B列に入れる式を教えて下さい。

  • エクセルで、入力数字を自動的に代入し結果表示させたい

    入力した数字を自動的に代入し、その結果をそれぞれ表示させるにはどうしたらよいのでしょうか。具体的には      A列         B列          C列 1行    10          20          A1またはB1を引っぱって表示 2行    30          40          C1がA1のときA2、C1がB1のときB2を表示 3行   C3結果表示   C3結果表示   C1+C2の計算式 A1、A2、B1、B2は手入力します。 C1でA1が代入された場合C2にはA2が代入され、C3はC1+C2を計算し、その結果40をA3に表示させる。 また、C1でB1が代入された場合C2にはB2が代入され、C3は計算結果60を表示させる。 というようにしたいのです。C1、C2、A3、B3にはどのような計算式を入れればよいのか教えてください。

  • Excelで同数値の数を数える

    次のような数値があるとします。  A   B   C   D  201   1   205   2           201   2   205   1   203   1  行A、Cには201、202などの値がランダムに 表示されています。(関数で表示された値です) 行Bには、例えばB1にはA1:A3の範囲中にA1セルで表示されて いる値と同じ値がいくつあるかをカウントしてあるのですが、 このカウントに関数を使いたいのです。 行Dには、A1:C3の範囲で同じようにカウントした結果を表示 させたいと思います。 同じ行に同じ値が表示されていることはありません。 AとCのセルが空白の場合はBとDも空白にしたいため、 IF(A1="","",COUNTIF($A$1:$A$3,A1)) と入力してみたのですが、空白セルに関数があるせいか、 空白セルまでカウントされてしまいます。 行Aの関数を消すとうまくいくのですが、 消さずに、空白セルをカウントしない ようにする方法はあるでしょうか。 お返事お待ちしています。  

  • エクセル関数で・・・

    A列の1行目から45行目までに、”1”か”×”を入力するか、空白があります。 B列の1行目から45行目までに、様々な数値、若しくは空白が入ります。 この時、A列が”×”の行でB列が空白でないセルをカウントする数式を教えて下さい。   A  B 1 ×  20 2 × 3 1  30 4 ×  5 1  20 6 7 1  30 8 ×  10・・・・ こんな感じで、A列が”×”でB列が空白でないセルは『2』と導きたいのです。 分かりにくい説明で申し訳ありませんが、宜しくお願いいたします。

  • 【エクセル】範囲内の空白ではない一番下のセル

    またよろしくお願いします。 2段階にわけて質問します。 【質問1】 範囲A1:A10の空白ではない一番下のセルの値を得たい 【質問2】 たとえば質問1でA8が該当セルだった場合、範囲B1:B8の空白ではない一番下のセルの値を得たい。 A列の状態によってB列の範囲を変えて選び出すのが難しそうです。 よろしくおねがいします。

  • 《エクセル2000》SUMPRODUCT関数、この式のどこがいけないのか…

    こんにちは。 A列が1であり、B列とC列に共に数字が入っている(空白でない)ものをカウントしたいと思い、以下の関数を書きました。 =SUMPRODUCT((A1:A50=1)*(B1:B50<>"")*(C1:C50<>"")) ですがこの式ですと、「B列とC列が共に空白なもの」の個数が返って来てしまいます。 「<>」が怪しい気がするのですが、具体的に何がいけないのでしょうか? また、欲しい数字を出すようにするにはどうすればいいのでしょうか。 よろしくお願いします…

  • Excelマクロの範囲選択でつまづいています(T ^T)

    業務上、データ集計を行うことが多く、マクロが必要不可欠です。 ところが、どーしても解決できないものがあるので、どなたか救いの手をお願いいたします。m(_ _)m *************************** (1) 横(列)方向に項目あります。【A1・B1・C1】 (2) 縦(行)方向にデータがあります。【A2・A3・・・A50】 (3) A列はA1セルが項目、A2以降がデータでA50まで空欄ナシ。 (4) B列はB1セルが項目、B2以降がデータでB50までデータがあったり、   なかったり(空白)。 (5) C列はC1セルが項目、C2にA1をキーとして他のファイルから   リンク(IF関数やVLOOK関数でネスト)したデータが入っています。 と、ここまでは何の問題もないのですが、C2のリンクデータ(関数)をC3~C50にもCopyしたいのです。 ただ、元データの件数は毎回違うので、今回のように"50行"という指定はできません。 なので、条件としてはA列にデータがある場合は、同じ行のC列にC2の関数をCopyする。A列にデータがなければ、そこで処理は終わり。という感じが理想です。 **************************** B列の空白セルさえなければ、SpecialCells(xlLastCell)やEnd(xlDown)などが使えるんだろうなぁとは思うのですが、Loopとかも良く分からないし。。。 どなたかご教授をお願いいたします。m(_ _)m

  • エクセル、行数をカウントしたい。

    エクセル初心者です。 よろしくお願いいたします。 エクセルでこのような表を作っています。   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列どちらかにデータがある 場合のみ、カウントしてくれる。 こんなワガママなことができたら、と思っております。 補足が必要ならばいたします。 それと、遅くなるかもしれませんが、お礼は必ずさせていただきます。

専門家に質問してみよう