アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のエクセル表があります。
B列は商品番号でセルの書式設定は0000を設定しており、C列は数値です。
F2セルは検索対象を入力するセルで、こちらの書式設定も0000を設定しいます。

4桁の商品番号は小番なしの商品番号で、
0000-0000形式の商品番号は「親番号-子番号」という内容で、集計に必要なのは子番号です。


(------)B列 C列
(1行目)商品番号 販売個数
(2行目)1786 3
(3行目)1789 3
(4行目)0019-0019 2
(5行目)0019-0599 2
(6行目)0906 1
-----------------------
F2セルは商品番号を入力。0000-0000形式の商品番号であれば下4桁のみを入力する。
-----------------------

そこで下記の式を入力すると4桁の商品番号の集計結果は正常ですが、0000-0000形式の集計は常に「0」となります。
①=SUMIF(B:B, F2, C:C)

次に下記の式を入力すると、反対に、0000-0000形式の集計結果は正常ですが、4桁形式商品番号の集計結果は常に「0」となります。
②=SUMIF(B:B, "*" & TEXT(F2, "0000"), C:C)


先日、この件を質問させていただき、配列をうまく利用すればうまくいくよとアドバイス頂いたのですがうまくいかず、というより理解できず;、ですので、①②の結果は正常なので、IFで分岐させればいいのではと考え(→IF(ISNUMBER(SEARCH("-",B1)),"ハイフンあり","なし"))、次の式を考えたのですが正常な結果を示しません。4桁の商品番号の集計は正確ですが0000-0000形式の商品番号は常に「0」です。

=IF(ISNUMBER(SEARCH("-", B2)), SUMIF(B:B, "*" & TEXT(F2, "0000"), C:C), SUMIF(B:B, F2, C:C))

そこでハイフン検索がうまくいっていないかと考え、下記の式でためしたのですが、結果は正常で、ハイフンがある場合はtureを返します。
=IF(ISNUMBER(SEARCH("-", B1)), "ハイフンあり","ハイフンなし")


結果が正常でないためどこかに誤りがあるのは明白ですが、
上記につきましてのご指摘がございましたらご教授いただけますと幸いです。

以上、よろしくお願い申し上げます。

質問者からの補足コメント

  • AIさんに聞いてだいたい分かりました。
    そうですよね「IF(ISNUMBER(SEARCH("-", B2)),」ではB2だけを判定としているため、B2の値がfalseならあとは全部falseで処理されますよね。。。

    VBAであれば簡単に処理できそうですがVBAを使用するほどではないので、
    やはり今しているようにD列に下4桁を抜き出して集計するようにします。

      補足日時:2023/04/15 15:28
  • taglet様のお教え頂いた方法で目的がいろいろと達成できそうです。
    本日でこのスレッドは終了しますが、それまでで何か知っておいたほうが良いという情報がありましたらお教えいただけましたら幸いです。

    ご回答いただきました皆様、誠にありがとうございました!

      補足日時:2023/04/15 17:35
  • 色々考え、やはり最初にしていたようにD列に下4桁を抜き出し、それを対象にしていこうと思います。数値のほうがいろいろ都合がよさそうですので。

    皆様この度はありがとうございました!

      補足日時:2023/04/15 18:43
  • 今回はmike32様の方法でいくことにしました。
    その方法で問題ありませんでした。

    if分岐がダメで、片方づつの集計が合ってるのであれば足せばいいだけという点は盲点でしたし、単純なことこそ盲点になるものだと改めて痛感しました。他にもいろいろ当てはまりそうです。

    皆さまありがとうございました!

      補足日時:2023/04/16 16:32

A 回答 (4件)

現在のデータを変更せずに集計式だけを変更するとしたら、


①と②の式を足せば、目的の値になりそうです。

=SUMIF(B:B, F2, C:C)+SUMIF(B:B, "*" & TEXT(F2, "0000"), C:C)
    • good
    • 4
この回答へのお礼

なるほど、**足す**のですね。明日、やってみます。

お礼日時:2023/04/15 21:59

商品番号を文字列にしてしまえば、シンプルになります。



・B列とF2セルのセル書式を、文字列にする。
・G2セルの式に「=SUMIF(B:B,"*"&F2,C:C)」を設定。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

すばらしいですね! 出来ました! これでいろいろ応用できそうです。ありがとうございました!

お礼日時:2023/04/15 17:30

B列の表示形式は、ハイフンを含むセルが文字列扱いなので、


0000だと正しく認識されません。
0000;;;@のように文字列に対応する設定にします。
(これならロケールの問題は発生しません)

複雑な式にするよりも、B列を対象にした作業列を用意して、
文字列として取り出して検索対象にしたほうが簡単です。
例えばD列に
 =RIGHT(TEXT(B2,"0000"),4)
でオートフィルして文字列としての4桁を出します。
この作業列を範囲にすることで、①の式が有効になります。
 =SUMIF(D:D,F2,C:C )
「SUMIFのIF分岐について」の回答画像2
    • good
    • 0
この回答へのお礼

現時点、下4桁を抜き出したD列で仰せのように処理しておりましたが、0000;;;@ という方法は知りませんでした。

アドバイスありがとうございました!

お礼日時:2023/04/15 17:32

一つ確認ですが、例えば0019-0019だと、表示形式はどのように設定していて、そのセルを選択すると数式バーにはどのように表示され

ているのですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

B列を全選択して書式は「ユーザー定義」で0000を設定していたはずなのですが、今確認すると、「その他」のCondigo Postalというものになっていました。

再度B列を選択し「ユーザー定義」で0000を設定しても「その他」のCondigo Postalのままです。

この件につき今調べると直しようがないとの記事がありました。
エクセルは2019を使用しています。
https://oshiete.goo.ne.jp/qa/3100208.html

0019-0019のセルを選択した数式バーは「0019-0019」に表示されており、
1786のセルを選択した数式バーは「1786」でそのままです。

お礼日時:2023/04/15 14:24

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