• ベストアンサー

エクセルの関数について

以前も同様の質問をさせていただきましたが、より具体的に質問させていただきます。 添付のような資料を基に下記の条件で集計したいと考えています。 どのような関数を使用すれば良いか教えて下さい。 (1)B列の中で85278を探す (2)B列の最初の数字が1 (3)B列の右から2文字目の数字が1または2の場合 (1)(2)(3)の条件が満たされた場合、月ごとの数値を集計したいです。 よろしくお願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>(1)B列の中で85278を探す >(2)B列の最初の数字が1 掲示のサンプルだけで見ると、これは「B列が185278で始まる」で十分に見えますが、まだ何か説明不足なのですか? また「数字の中(の何文字目にあるか不明)を探す」じゃなく、B列の2文字目から5文字分が、という風にもっと具体的に限定できそうですが? 計算例: C7に =SUMPRODUCT((LEFT(B2:B6,1)="1")*(MID(B2:B6,2,5)="85278")*((MID(B2:B6,12,1)="1")+(MID(B2:B6,12,1)="2"))*C2:C6)

pin103568
質問者

補足

もう一つ条件を追加しなくてはならなくなりました。 B列に挿入して、B2~B6には170か180が入力されています。 170の時に集計したい場合、 SUMPRODUCT関数の(LEFT(B2:B6,1)="1")の前に (B2:b6="170")*と記載すれば良いのでしょうか? 宜しくお願い致します。

その他の回答 (5)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

済みません、訂正させてください 配列関数は セル引き渡し、できません なので、先の回答で 各々を セルに、入れれば良い と、したのは 間違いです 正しくは (1)ですが SUMPRODUCT((len(TEXT(B:B,"@"))<>len(SUBSTITUTE(TEXT(B:B,"@"),"85278","")))+0) で、判る と、思います 数値16桁かな? 其の内の何処に 85278が、在ろうと 見つけます。 (2)ですが、 SUMPRODUCT((LEFT(B:B,1)=1)+0) で、判る で、しょう (3)ですが、 SUMPRODUCT((ABS(RIGHT(B:B,1)-1.5)=0.5)+0) …A で、判る で、しょう 総合すると SUMPRODUCT((len(TEXT(B:B,"@"))<>len(SUBSTITUTE(TEXT(B:B,"@"),"85278","")))*(LEFT(B:B,1)=1)*(ABS(RIGHT(B:B,1)-1.5)=0.5)) ですかね 同シート上の、何処か☆セルに イコールの後に書き込むと 動作する と、思う の、ですが INDEX文を、掛けてないので もしかしたら、動作しないかな?

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

(1)B列の中で85278を探す (2)B列の最初の数字が1 (3)B列の右から2文字目の数字が1または2の場合 ですか? (1)ですが 数値を文字列に変え        :TEXT(B:B,"@") …甲 希望の文字列を置換により削除し  :SUBSTITUTE(甲,"85278","") …乙 桁数が減ったセル数を数える    :SUMPRODUCT((len(甲)<>len(乙))+0) …壬 で、判る と、思います (2)ですが、 ちょっと強引ながら 左1文字取りだし          :LEFT(B:B,1) …丙 1かどうか見る           :丙=1 …丁 一致したセル数を数える      :SUMPRODUCT(丁+0) …癸 で、判るでしょう (3)ですが、大凡 (2)と、左右が違うだけ ですよね? なので、 右ひと文字取りだし         :RIGHT(B:B,1) …戊 1.5 引き              :戊-1.5 …己 絶対値を取る            :ABS(己) …庚 此が0.5か、見る          :(庚=0.5) …辛 一致したセル数を数える      :SUMPRODUCT(辛+0) …A で、判るでしょう ので、 総合では SUMPRODUCT((壬*癸*A)+0) で、判るでしょう 各引用は 別々に、セルに入れて 参照させるも、よし 引用部を式に当てはめて 1式にしても良し ですね 如何でしょうか? お役に、立てていたなら 幸いです。

回答No.4

K,M,L,Nを作業領域にします。 K2に =IF(COUNTIF(B2,"*85278*"),"○","") B2に"85278"が含まれているなら”○”を入れてね。 L2に =IF(LEFT(B2,1)="1","○","") 一番左の文字が1なら"○”をいれてね。 M2に =IF(OR(MID(B2,LEN(B2)-1,1)="2",MID(B2,LEN(B2)-1,1)="1"),"○","") 右から2番めの文字が、1か2なら ”○” を入れてね。 N2に =IF(AND(K2="○",L2="○",M2="○"),"○","") K2,L2,M2のみっつとも”○”なら”○”を入れてね。 6行までオートフィルで式を入れます。 C7に =SUMIF($N$2:$N$6,"○",C2:C6) N2:N6に”○”が入っているものだけを合計してね I7迄、オートフィルで式を入力します。 余計なことだと思いますが・・・E2 140000では合計が 980000 になりませんよね。 合計を正しいとして E2に 163000 を入れてやってみました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

例えばC2:C6の合計なら =SUMPRODUCT(ISNUMBER(FIND("85278",B2:B6))*(LEFT(B2:B6,1)="1")*((LEFT(RIGHT(B2,B6,2),1)=”1”)+(LEFT(RIGHT(B2,B6,2),1)=”2”)),C2:C6) まあ、本当はB列の科目コードを分解した列を作っておけば、もっと楽に計算できるんですけどね。 J2=LEFT(B2,1) K2=MID(B2,2,5) L2=LEFT(RIGHT(B2,B6,2),1) なら =SUMIFS(C2:C6,J2:J6,"1",K2:K6,"85278",L2:L6,">=1",L2:L6,"<=2") で可能です

  • hawa254
  • ベストアンサー率43% (259/589)
回答No.1

??? 書き間違いだと思います。本当は何でしょうか? >(1)B列の中で85278を探す >(2)B列の最初の数字が1 >(3)B列の右から2文字目の数字が1または2の場合 >(1)(2)(3)の条件が満たされた場合 たぶん、(2)(3)の列が違うのだと思います。 一番簡単な方法は下記だと思います。 ・月ごとの数値の集計は、合計欄の列を1列増やして、  全ての行で「=sum()」により合計をしておく ・条件は「条件付き書式」を使ってセルに色を付ける とすればよいと思います。

関連するQ&A

  • エクセル関数

    こんにちは。 次のような場合エクセルでどのような関数を使えばよいのか教えてください。 例>A列に1,2,3の3種の数字がある場合、それに対応するB列(A1ならB1、A5ならB5)において    A列の条件に合うB列の数値の和。 A列が1になっているB列対応セルの数値のみの和を知りたい場合に使う関数です。 意味、分かっていただけるでしょうか? よろしくお願いいたします。

  • エクセルの関数

    エクセルの関数で、下記のようなことができれば教えてください。     A      B 1   あ     100 2   い     120 3   う      5 4   あ     150 5   い     200 A列に特定の文字がはいっており、それを文字別に集計(B列の数字)するこはできるでしょうか? ↓このような感じにしたいのですが。     A      B    あ     250    い     320    う      5

  • エクセル関数を使用したデータ集計について

    関数の質問です。 仕事でデータ集計をしており、 あるデータを他のシートに集計できる関数はありますでしょうか。 具体的には、 添付画像のような Aの表に、Bのデータを、Cのルールを 用いて、集計したいです。 Vlookupとsumifsを用いろうとしましたが、うまくいきませんでした。 B-2のデータをvlookにして、 sumifsの式のデータ範囲の中にいれましたが、うまくできません。 補足 B-2の列をvlookで他の列に集計せずに、関数のみでBのシートからいきなりAの集計表に集計したいです。 (理由は、数字をあちこちに貼り付けると、その照合をしなくてはならないため、あちこちには貼りたくないのです) 関数は一つのセルの中に複数組み合わせるのは、もちろん問題ありません。 よろしくお願いいたします。

  • エクセル TEXT関数を使うと左揃えになってしまう

    エクセル2003です。 Text関数を使うと左揃えになってしまうのですが、 標準と同じ右揃えになる方法は有りますでしょうか。 具体的には A列が”EUR”の時、B列の数字 “#,##0.00” A列が”JPY”の時、B列の数字”#,##0” という式をIF関数とTEXT関数を使用して作ったのですが 全て左揃えになってしまうので困っています。 条件つき書式でも右揃えというのはありませんし、、、困っています。 何か解決策があればと思い質問しました。 宜しくお願いします。

  • エクセルで関数を用いて数値入力

    エクセルでA列に0とそれ以外の数字が入力されています。(下記の画像のように、0以外の数字は飛び飛びに入力されており、それらの数字の間を0が埋めているというイメージです) B列に以下の条件で数字を入力したいのです。 1、A列に0以外の数字が入力されているときは、B列には0を入力する。 2、A列に0が入力されているときには、その行より上で最も近い0以外の数字を入力する。 上記の条件で、B列に関数で数値入力をすることはできますか。

  • エクセル2000:B列に入っている関数をSUM関数だけ残し、そのほかは一括数値に変換したい

    よろしくお願いします。 エクセル2000で、 A列に勘定科目、B列に縦にSUM関数ほか、VLOOKUP関数などいろいろ関数を入れて数字が表示されています。 具体的には予算を作成する過程での資料です。 そこで、B列のSUM関数だけをのこして、それ以外の関数をすべて「数値」(関数で現在計算結果として表示されている数値)に変換したいのです。その方法をお教えくださいませ。 よろしくお願いいたします。

  • エクセルの関数を教えてください!

    840   1 1260  1 1260  1 1260  1 1890  2 1890  1 1890  1 2310  3 2646  1 2646  1 2940  4 この2列の数字は左側の数字に対して、右側が その数字の個数なのですが、 左の数字が統合され、それに対して右の数値が加算される エクセルの関数を教えてください。

  • エクセル関数を教えてください!

    840 1 1260 1 1260 1 1260 1 1890 2 1890 1 1890 1 2310 3 2646 1 2646 1 2940 4 この2列の数字は左側の数字に対して、右側が その数字の個数なのですが、 左の数字が統合され、それに対して右の数値が加算される エクセルの関数を教えてください。

  • 2つの数字の変化を読み取るエクセル関数はありますか

    エクセルの関数についてです。2つの数字の変化を A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ ・    ・ ・    ・ となっている時に,以下の2つの条件を満たす式を作ることはできますでしょうか。 (1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す (2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次は,B7なので120,次はB8なので123…と 数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出すようにしたいのです。 やはりマクロを組まないといけないのでしょうか? 分かりにくかったら申し訳ございません…

  • エクセル関数について

    表の中での集計を取りたいのですが、どうしてもうまく行きません。    A    B 1   5   1000 2   5   1000 3   6   1200 4   7   1300 5   5 6   8   1500 7   10   2000 このような場合に、A列で、5から8までの数値範囲内で、B列に数値が入っている場合の個数をカウントしたいのです。 5になればOKとしたいのですが、また集計をした結果を書くシートと、実際に集計するデータが入っているシートは別になります。 よろしくお願いします。

専門家に質問してみよう