![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
下記のエクセル表があります。
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)), "ハイフンあり","ハイフンなし")
結果が正常でないためどこかに誤りがあるのは明白ですが、
上記につきましてのご指摘がございましたらご教授いただけますと幸いです。
以上、よろしくお願い申し上げます。
No.3
- 回答日時:
商品番号を文字列にしてしまえば、シンプルになります。
・B列とF2セルのセル書式を、文字列にする。
・G2セルの式に「=SUMIF(B:B,"*"&F2,C:C)」を設定。
No.2
- 回答日時:
B列の表示形式は、ハイフンを含むセルが文字列扱いなので、
0000だと正しく認識されません。
0000;;;@のように文字列に対応する設定にします。
(これならロケールの問題は発生しません)
複雑な式にするよりも、B列を対象にした作業列を用意して、
文字列として取り出して検索対象にしたほうが簡単です。
例えばD列に
=RIGHT(TEXT(B2,"0000"),4)
でオートフィルして文字列としての4桁を出します。
この作業列を範囲にすることで、①の式が有効になります。
=SUMIF(D:D,F2,C:C )
![「SUMIFのIF分岐について」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/190948_643a4e0cd3767/M.png)
現時点、下4桁を抜き出したD列で仰せのように処理しておりましたが、0000;;;@ という方法は知りませんでした。
アドバイスありがとうございました!
No.1
- 回答日時:
一つ確認ですが、例えば0019-0019だと、表示形式はどのように設定していて、そのセルを選択すると数式バーにはどのように表示され
ているのですか?ご回答ありがとうございます!
B列を全選択して書式は「ユーザー定義」で0000を設定していたはずなのですが、今確認すると、「その他」のCondigo Postalというものになっていました。
再度B列を選択し「ユーザー定義」で0000を設定しても「その他」のCondigo Postalのままです。
この件につき今調べると直しようがないとの記事がありました。
エクセルは2019を使用しています。
https://oshiete.goo.ne.jp/qa/3100208.html
0019-0019のセルを選択した数式バーは「0019-0019」に表示されており、
1786のセルを選択した数式バーは「1786」でそのままです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
81・・・・・から始まる電話...
-
不気味な番号
-
電話をかけるのに、違う番号を...
-
至急お願いいたします! ゆう...
-
携帯番号変える時は、それなり...
-
同じ商品なのに、JANコード...
-
FAX番号の英語表記とは?
-
すべて「ひとつ・・・」ではじ...
-
フリーダイヤルのけた数
-
固定電話着信履歴 181 ・・・・...
-
P/Nとは?
-
電話番号 +817673467911という...
-
変な番号が・・・
-
ワードで抽選番号を振りたい。
-
モバイルsuicaを持っており、 ...
-
県境をまたぐ県道の番号について
-
if関数を使って割引率をだす
-
公衆電話番号
-
マシン番号とは?
-
固定電話に前使用者の名前でか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
81・・・・・から始まる電話...
-
電話番号 +817673467911という...
-
不気味な番号
-
電話をかけるのに、違う番号を...
-
フリーダイヤルのけた数
-
至急お願いいたします! ゆう...
-
固定電話着信履歴 181 ・・・・...
-
携帯番号変える時は、それなり...
-
P/Nとは?
-
同じ商品なのに、JANコード...
-
新紙幣の
-
【Excel】版が同じ事を示す番号...
-
すべて「ひとつ・・・」ではじ...
-
FAX番号の英語表記とは?
-
0120613184は、どこの番号です...
-
メルカリやラクマができず 体調...
-
内線番号一覧が分かりづらい
-
銀行で番号札は?
-
if関数を使って割引率をだす
-
ファイル名に「1-1、1-2...
おすすめ情報
AIさんに聞いてだいたい分かりました。
そうですよね「IF(ISNUMBER(SEARCH("-", B2)),」ではB2だけを判定としているため、B2の値がfalseならあとは全部falseで処理されますよね。。。
VBAであれば簡単に処理できそうですがVBAを使用するほどではないので、
やはり今しているようにD列に下4桁を抜き出して集計するようにします。
taglet様のお教え頂いた方法で目的がいろいろと達成できそうです。
本日でこのスレッドは終了しますが、それまでで何か知っておいたほうが良いという情報がありましたらお教えいただけましたら幸いです。
ご回答いただきました皆様、誠にありがとうございました!
色々考え、やはり最初にしていたようにD列に下4桁を抜き出し、それを対象にしていこうと思います。数値のほうがいろいろ都合がよさそうですので。
皆様この度はありがとうございました!
今回はmike32様の方法でいくことにしました。
その方法で問題ありませんでした。
if分岐がダメで、片方づつの集計が合ってるのであれば足せばいいだけという点は盲点でしたし、単純なことこそ盲点になるものだと改めて痛感しました。他にもいろいろ当てはまりそうです。
皆さまありがとうございました!