- ベストアンサー
エクセルで数値を文字列にしたら0が表示されない
お邪魔します。いつもお世話になっております。 ただいま仕事で困っており、取り急ぎで質問させていただきます。 エクセルで、数値を文字列にし、1が12個、2が3個などと抽出する作業をしています。しかし0や270といったゼロが抽出に引っかかりません。。 どうしたら良いでしょうか…。お願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
数式の矛盾マークとは、もしかして「循環参照」のことですか? そのくらいしか思いつかないので外れてたらすみませんが、 循環参照だとすると計算結果がおかしくなる可能性がありますので 原因を突き止めてなくした方がいいでしょう。 循環参照があると、Excelのステータスバーに 循環:xxx(セル番地) という表示が出ます。 シートもしくはファイルをコピーしておく等バックアップしてから そのセルを消してみてください。 ステータスバーの循環セル番地が消えて無くなるまで、繰り返します。 一番最後にセル番地が表示されていた場所が、犯人のセルです。 そのセルが意味する範囲に、自分自身のセル番地が含まれているのが原因のはずです。 どのように直すか(消せばいいのか、セル範囲を修正するのか)は その式を含め、表の構成次第ですので ここまでしかアドバイスできませんが、がんばってくださいね。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
質問文や補足を読んでも質問の状況が良くわからない。 隣の人にでも質問文を書いてもらたらどうだ。 (1)値と(関数式の結果の) (2)書式の設定でそう見えているのか を峻別して、数式バー部に出る値や式を良く見て、質問を組み立てなおすこと >数値を文字列にし これも関数でやっているのかな。関数の素人には難しいTEXT関数など使っているのか。 >1が12個、2が3個などと 1111・・11を検索しているのか セル内の1や2の個数を数えるのか。どちらにも取れるあいまいな表現。 >抽出する作業をしています 条件は。 この辺支離滅裂と思う。 どう言う操作で抽出しているのか。 >しかし0や270といったゼロが抽出に引っかかりません 例データ A1:A11 書式は文字列に設定し、全角数字で 数文字列 0 270 11 102 270 1 1234 01 80 0 ーー 条件 G1:G3 数文字列 0 270 ーー 操作 データーフィルタオプションの設定 指定した範囲 リスト範囲 A1:A11 検索条件範囲 G1:G3 抽出範囲 J1:J10 (J1にはA1セルと同じ「文字列」と入れておくこと) OK 結果 J1:J5 数文字列 0 270 270 0 と出るじゃないか。
お礼
ご回答ありがとうございました。素人で稚拙な質問文章大変申し訳ありません。まずはエクセルの質問の表現方法を学ぶべきですね。 精進します。
- mako_sea
- ベストアンサー率47% (62/130)
再回答します。 > と各セルに入っていてfx「text」でこの列全体を値に指定し、表示形式を”##”と入力してOKを出します。すると隣のセルに文字列になった数字がでる仕組みになるはずなんですが…。 "##"を"0"に変更してみると、ゼロも表示可能になります。 "##"はゼロを表示しない形式です。 ただしこうすると、入力のないただの空白セルもゼロが表示されてしまい、 そのような結果が「=COUNTIF(B2:B40,"*0*")」で参照したセルに含まれていると 期待していないゼロを拾ってしまう可能性があります。 その場合はifで空白セルだったら空白のままにする、 というような式の工夫が必要ですね。 例: =if(a1="","",text(a1,"0"))
お礼
ご回答ありがとうございます。 さっそく文字列変換の際の数式を"##"ではなく、0にしてみました。 なんとちゃんとゼロが表示されるようになりました(感涙)また、空白についてですが、マークシートの集計なので、無記入の場合@で表示されるため、問題ないです(嬉) しかしちょっと疑問に感じたのが、同列他のセルを一気にセルコピーしたとき数式の矛盾マーク!が出ました。ほっといていいのかしらと。 もし、ご覧になりましたらお返事下さると幸いです。。
- mshr1962
- ベストアンサー率39% (7417/18945)
#3です。#2への補足見ました。 0を含む数値のカウントなら =COUNT(FIND("0",TRIM(B2:B40),1)) と入力してCtrl+Shift+Enterで配列数式(Enter後に数式が{}で囲まれます)にしてください。
お礼
再回答ありがとうございます。 しかし、ご紹介頂いた数式を入力して確かに0が表示されるようにはなったのですが、この数式のどこを変更すれば、他の数字の抽出に応用できるのでしょう(大汗) もしご覧になられたらお返事下さると大変助かります。。 ありがとうございました★
補足
スミマセン。お詳しいようでしたら伺いたいのですが・・・ countifで検索条件を"*0*"ではなく"0?"で通じないのは何故ですか? 270の「0」も「0」だけのセルも両方カウントしてくれそうな気がしたのですが…。 お願い致します。
- mshr1962
- ベストアンサー率39% (7417/18945)
現状どのようにしてカウントしてるのかわかりませんが A1に数値があるとして 0の数=LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1),"0","")) で抽出できます。
お礼
ありがとうございます。 明日紹介していただいた方法で抽出してみたいと思います。
- mako_sea
- ベストアンサー率47% (62/130)
質問返しで申し訳ありませんが 問題を判別するために抽出をどのように行っているかを もう少し詳しく説明してください。 ・セルにはどのようなデータが入っているのか →複数のセルに文字列の数字データがあるのですか? →それとも1つのセルに1234567891111222233334444といった数字が文字列で入っているのですか? ・数値を文字列に、とは書式のことですか? それとも質問にあるように全角文字にしているということですか? ・0や270以外は抽出できるのであれば、それはどのように抽出しているのですか? →関数ならその式の形式を教えてください 少なくともこのくらいの情報がないと 正しい答えが導けそうにないです。 よろしくお願いします。
補足
ご回答ありがとうございます。そして申し訳ありません(汗)補足します。。 例えば数値が ↓列↓ 270 35 45789 0 と各セルに入っていてfx「text」でこの列全体を値に指定し、表示形式を”##”と入力してOKを出します。すると隣のセルに文字列になった数字がでる仕組みになるはずなんですが…。 (引き継いだ仕事なのでこのやり方で数字を文字列に変換しています。) この時隣に作った列に左寄せで文字になった数字が並ぶはずなんですが単独の0だけは表示されないのです(汗)それにその後抽出する「count if」にかけても =COUNTIF(B2:B40,"*0*") これではB2からB40までの文字にした数値のうち270の「0」は読み取ってくれても単独の「0」は読み取ってくれず、かといって =COUNTIF(B2:B40,"0") で数値のままのもとの列を指定して抽出をかけると270の「0」はカウントされず、単独の「0」だけしか拾ってくれないのです。 支離滅裂で申し訳ありませんがご理解頂ければ何かアドバイスを頂戴できたらと思います。。素人ですみません・・・。
- pbforce
- ベストアンサー率22% (379/1719)
検索しようとしている0は文字の"0"で検索していますか? もう少し具体的にこのようなことをやっているけど、うまく0を拾えません、とご質問頂ければ、それに則した回答もいただけると思います。
お礼
ありがとうございました! ご指導いただき、なんとか解決できそうです。データ量が多くて少しテンパってしまいました。申し訳ありません。 あたたかいアドバイス本当にありがとうございました。循環参照についても教えていただいたようにやってみます。ほんとうにありがとうございました。