[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じ値なのにFALSEになる』(run)
A列とD列にデータが入力されています。
値が同じかを見るため、EXACTを使用しています。
どう見ても同じ値なのですが、違うとでてしまいます。
数字が微妙に違うのかな?と思ったのですが、
半角のカタカナ 又 漢字でも同じ結果になってしまいます。
IFなどを使っても同じです。
よい方法はないでしょうか。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
ゴミデータがついているのかも。後、スペースが入っているとか。
その2つのデータをここに貼り付けることはできますか? もしくは、CLEAN関数を使ってからチェックするとか? (コナミ) 2018/01/15(月) 16:16
まず、LEN関数で文字数をチェックしてみるとか、MID関数で1文字ずつ取り出して比較してみるとか、地道に検証するしかないのでは。。。
(もこな2) 2018/01/15(月) 16:19
CLEANを使ってからチェックすればいけました。
しかし、毎回しないといけないので、2:を1:に合わせておきたいです
もこな2様
RIGHTで右から6文字分だしてしたのですが、だめでした
(run) 2018/01/15(月) 16:25
>
すごい、これなんだろう。Excelに貼り付けたら見えなくなりますね。
???さんも書かれてますが、これはどこから持ってきているデータなんでしょう? CLEAN関数をあらかじめ入れた作業列を作って置いてこのデータは列ごと他の列に貼り付けて CLEAN関数を入れたセルと2の列を比較するとかではダメですか? (コナミ) 2018/01/15(月) 16:39
別のアプリからのデータにそういった見えないコードの文字がついていることは よくある(?)ことです。
どうせEXACTで比較するんですから、その時に、
=EXACT(CLEAN(A1),D1) ←どっちがどっちかわかりませんが
とかにできないんですか?
(コナミ) 2018/01/15(月) 16:46
絶対入るなら、2文字目以降を抜き出す数式にすれば良いし、入ったり入らなかったりならば1文字目のコードを調べて、これだったならば2文字目以降を使う式にすれば対応できますが、こういう見えないコードを入れない運用がベストでしょう。例えば、こんな式。
=IF(LEFT(A1,1)=CHAR(31),MID(A1,2,99),A1)
元アプリは、他の人が作ったとか、他社に依頼して作ったとかならば、症状を説明して、不具合対応してもらえば良いです。 見えないのだから、Excelシートに貼る文字列に、こんなコードは入れちゃいけないです。
(???) 2018/01/15(月) 16:55
有難うございました。
教えていただいた分を試してみましたが、やはりうまくいきませんでした。
元ソフトは、業務システムのソフト?を作っている会社のものです。
一年ほど前に変えたところで、不具合が多々ありますが、平社員なので何とも言えません。。。
毎月する作業なので、元のエクセルの値をソフトで取り出したものに合わせられたら、いちいち関数を使って合わせて…としなくて、手間が省けるかな?と思い質問させていただきました。
もう少し探ってみます。
ありがとございました。
(run) 2018/01/17(水) 09:39
市販のアプリなら、使い方の問題かと思いますが、専用で依頼して作成したアプリならば、作った本人も気づかなかったバグの可能性があります。(使い方を間違えている可能性もあります)上長に現象を説明して、対応を相談すると良いでしょう。 私の感覚では、見えない文字だったので、バグに気づかなかったのではないかと思います。
なお、問題のセル(説明に使った1番と2番)を範囲コピーし、ワードパッド等のエディタに貼りつけると、見えない文字があるのが判るでしょう。ノートパッドでは、見えない文字が詰まってしまうので、駄目です。 そして、何らかのバイナリエディタに文字列として貼りつけると、具体的な文字コードが判ります。
または、たとえばA1セルに問題の文字列があるとして、=LEN(A1) で文字数を調べ、=CODE(MID(A1,1,1)) で文字コードを調べる事もできますので、詳しく調べてみてください。(例示の場合は 1: が付いているので、=CODE(MID(A1,3,1))になります)
(???) 2018/01/17(水) 10:16
今は余計なコードが付いているので、セルに貼ると文字列として扱われますが、これを外すと数値になるので、前ゼロが消えてしまうでしょう。対策としては、比較先も比較元も、セルの書式は文字列にしましょう。(数式で代入しているなら、TEXT関数を通すとか)
(???) 2018/01/17(水) 10:21
ただ、「見えない文字」と言っても半角スペースに見えて、その文字は選択できますよね?
なので逆に元の文字列の、その文字だけをコピーして、
置換機能の検索文字に貼りつけ、置換後の文字列は「'(シングルクォーテーション)」にして、
置き換えてしまうのはいかがでしょうか?(文字列が数値になってしまう予防です)
(まっつわん) 2018/01/17(水) 10:44
調べましたら7文字で、CODEの方は31と出ました。
500件くらいあるのですが、全て同じのようです。
(run) 2018/01/17(水) 11:05
このコードExcelに貼り付けると選択できないんですよね…困ったことに。
=SUBSTITUTE(A1,CHAR(31),"")
で置換するとか?数式なら置換後も文字列のままでいけるかな? でも最初にCLEAN関数ならできたって書いてませんでしたっけ? (コナミ) 2018/01/17(水) 11:35
=EXACT(A1,CHAR(31)&D1) こんな式でも良さそうですが、見えない文字だし…。 D列の先頭にCHAR(31)を追加するマクロを作るのは簡単ですが、後から見た人が絶対何かやらかしそう。A列側に変なコードを入れないようにすべきかと思いますよ。 (???) 2018/01/17(水) 12:58
すごく根本的なことなんですが、runさんの書かれている元データがどっちのことなのかとか A列・D列にどっちが入っているのかとかを明確にしないとうまくいかないと思いますよ。 多分はっきりと書いている記述はないですよね?
(コナミ) 2018/01/17(水) 14:27
になります。すみません。
(run) 2018/01/17(水) 14:29
そのとおりだったら、以下をお試しください、
(1)ctrl と G を同時押し
(2)「ジャンプ」ダイアログの左下「セル選択」をクリック
(3)数式のオプションボタンをクリックして、数値、文字、論理値のチェックを外す。
(4)OKを押すと、エラー値になってるセルが選択されます。
(5)あとは消すなり色付けるなりお好きに加工して下さい。
(もこな2) 2018/01/18(木) 14:31
その別質問に回答を書きましたが、希望に合わない回答だったのでしょうか? (bi) 2018/01/18(木) 14:34
もこな2様
場所が知りたいのではなく、自動再計算の件です。
bi様
すみません、見落としておりました。
(run) 2018/01/22(月) 14:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.