プロが教えるわが家の防犯対策術!

こんにちは、エクセル2010を使っています。

セルを結合して以下の様な文字列の数式を作りました。

A1セル
=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")

この文字列の数式を計算させようと、セルの書式設定で【標準】を選び、そのセルをアクティブにしてENTERで決定しましたが、いぜん文字列のままです。

試しに他セルに値で貼り付けて、それをENTERしてみると、そちらはちゃんと計算してくれるのですが、A1セルの式はマクロ実行の途中に何度も変わるので値貼り付け、ENTERは現実的には不可能です。

なんとか良い方法は無いものでしょうか?
詳しい方、よろしくお願いいたします。

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

  • うーん・・・

    それをやっても同じになってしまうんですよねー・・・

    文字列のままなんです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/09/08 20:54
  • どう思う?

    今確認してみましたが、入っていないようです><

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/09/08 21:04
  • へこむわー

    数式の表示 は もともと他のセルは文字列で表示されてないので一応試してみましたがダメみたいです。

    区切り位置も試してみましたが、変化なし、最後に=の置換も何も起こらずです><

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/09/08 22:52

A 回答 (8件)

たびたびすみません。



No.7の続きです。

A1のセルが正しく「NG」と表示されている時に、No.7のマクロを実行したら、
セル内が「NG」になって数式が消えてしまいました。

自動化した場合、A1のセルの表示が数式のままか、数式の結果かを確認できないので、
No.7のマクロは危険ですね。
すみませんでした。
    • good
    • 0

No.6はコピーを間違えました。

無視してください。

No.5の続きです。

「数値を文字列として書式設定した場合の予期しない動作」
https://support.microsoft.com/ja-jp/kb/141765

の方法3を試して失敗したのですが、
次のマクロを実行したら、
A1のセルの表示が「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」から「NG」になりました。
念のためにセル内に入力されている文字を確認したら「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」でした。
Excel 2007です。

Sub Enter_Values()
Range("A1").Select
Selection.NumberFormatLocal = "G/標準"
Range("A1") = Range("A1").Value
End Sub
    • good
    • 0

No.5の続きです。



「Vlookupそこにあるのに#N/Aが出る - Excel(エクセル) | 教えて!goo」の回答No.5かも。
https://oshiete.goo.ne.jp/qa/9004936.html

の方法3を試して失敗したのですが、
次のマクロを実行したら、
A1のセルの表示が「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」から「NG」になりました。
念のためにセル内に入力されている文字を確認したら「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」でした。
Excel 2007です。

Sub Enter_Values()
Range("A1").Select
Selection.NumberFormatLocal = "G/標準"
Range("A1") = Range("A1").Value
End Sub
    • good
    • 0

改善策ではないですが、何が起こっているのか気になって試してみました。


Excel2007です。

1. 質問の数式「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」を適当なセルに入力すると、そのセルは「NG」と表示。
2. 「NG」と表示されたセルの書式を「文字列」に変更したけれど、表示は「NG」のまま。
3. 仕方ないので入力を「'=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")'」に変更したら、表示が「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」に。
4. 「'=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」に変更しても、表示は「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」のまま。
5. 「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」に変更しても、表示は「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」のまま。
6. セルの書式を「標準」に変更したけれど、表示は「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」のまま。
7. そのセルを他のセルにコピーしたら、コピー先でも「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」のまま。
8. 元のセルとコピー先のセルで、数式バーにカーソルを移してからEnterを叩いたら、どちらも表示が「NG」に戻る。
9. 「NG」と表示されてるセルの書式を「文字列」に変更しても、表示は「NG」のまま。2.と同じ。
10. 書式を「文字列」なのに「NG」と表示されてるセルで、数式バーにカーソルを移してからEnterを叩いたら、表示が「=IF(AND(NQ40>=3,NQ36<=8),"OK","NG")」に。

この一連の作業で、以前に同じような現象について「教えて!goo」の質問を見て調べたことがあったことを思い出し、

「Vlookupそこにあるのに#N/Aが出る - Excel(エクセル) | 教えて!goo」の回答No.5かも。
https://oshiete.goo.ne.jp/qa/9004936.html

その時に参照したサイトが

「数値を文字列として書式設定した場合の予期しない動作」
https://support.microsoft.com/ja-jp/kb/141765

> Microsoft Excel で文字列の書式を設定した数値の書式を文字列以外に変更すると、その数値が期待どおりに変更されないことがあります。
> この動作は仕様です。書式を文字列数値形式に設定したセルは文字列として変更され、そこに入力した内容もすべて文字列として表示されます。

これと似た現象が起こっているような気がしました。
もしかしたら、ヒントが見つかるかもしれません。
(方法3は試してません。方法4は「乗算」後にセルでEnterを叩いたら「1」になって失敗しました)
    • good
    • 0

こんばんは。



>セルの書式設定で【標準】を選び、そのセルをアクティブにしてENTERで決定しましたが、いぜん文字列のままです。

「セルを結合して以下の様な文字列の数式を作りました。」がどういう操作をしたかは想像の範囲ですが、再現は出来ました。(もちろん、書式文字列-プレフィックス文字「'」も使っていません)

どのようにしても、文字列から外れる(数式になる)様子はありません。作りなおす方が簡単なような気がします。

方法:
・一旦、数式をテキストベースでメモ帳などにコピーペーストしておきます。
 =IF(AND(NQ40>=3,NQ36<=8),"OK","NG")
 そして、そこを削除します。

・次に、NQ40 と NQ36 の参照セルの書式は、書式-文字列になっていないか確認。
 なっていたら、標準か数値にします。そして、そこが数値(文字列以外)になったことを確認します。
 文字列になったままなら、左詰めになります。書式を直しただけでは、変わっていないことがあります。
 
・次に、最初の数式が入っていたところの書式を、標準か、数値か、少なくとも文字列以外になっていることを確認します。

そして、削除した数式を戻します。(数式バーから入れたほうが確実です)

原因:
書式文字列のセルを参照して、数式を作ったからです。文字列の数式というのは、おそらくそういう意味だったに違いないと思いました。仮に、参照先が文字列でも、数式バーから作れば、そのような問題は起こらなかっはずですが、文字列書式は、参照セルに伝染してしまいますので、注意が必要です。

なお、マクロ関数やVBA関数には、EVALUATE 関数というものがありますが、「文字列の数式」のままから値を取るなら、それを使うしかありません。
    • good
    • 0

数式の表示はオフですよね?


http://www.relief.jp/itnote/archives/003610.php

区切り位置ウィザードも効果ありませんか。
https://faq.qqweb.jp/faq/viewer.asp?ID=AC9A687811

あとは「=」を置換対象として、同じ「=」で置換するという方法が有効かもしれません。
この回答への補足あり
    • good
    • 0

A1セルにスペースなど入ってませんか?

この回答への補足あり
    • good
    • 0

>セルの書式設定で【標準】を選び、そのセルをアクティブにしてENTERで決定


それだけでは足らないと思います。
http://www4.synapse.ne.jp/yone/excel2010/excel20 …

セルをアクティブにしてからF2を押すなどしてセルを一旦編集モードにしてからEnterキーを押してください。
この回答への補足あり
    • good
    • 0

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