• ベストアンサー

エクセルで空白セル”” と未入力セルの違い

関数で セルA1 に=if(B1=0,"","入力済") としました。 セルの選択を素早くするためにショートカットキー「Ctrl+↓」を 利用しています。 通常の未入力空白セルは上記のショートカットで飛ばされて選択 されません。 これに対して上記関数で ""  として入力されたものを コピーして値だけを貼り付けたとしても 上記ショートカットキーで飛ばされず選択されてしまいます。 見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。) 未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。 また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに 戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。 おわかりの方お教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。 未入力の空白セルは「ISBLANK関数」で「真」を返します。 一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。 >また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。 不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。 >もちろんDeleteKeyを使って未入力の空白セルに >戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。 つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね? だったら簡単です。 すべての式を =if(B1=0,"","入力済") ではなく =if(B1=0,1/0,"入力済") にしておきましょう。 すると、未入力の所は、空白("")にならず「#DIV/0!」になります。 そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。 「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。 セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。 「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。 「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。 もちろん、大量にあっても、手順は変わりません。

その他の回答 (4)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

追記で補足説明。 先ほどの回答で >「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。 と書きました。しかし、ある種の「異常な状態」は返せます。 それが「0で除算した状態」で、実際に式に書くと >=if(B1=0,1/0,"入力済") と言う事になります。 なお「式でエラー値を返す場合」は =if(B1=0,1/0,"入力済") の他 =if(B1=0,#NULL!,"入力済") や =if(B1=0,#REF!,"入力済") や =if(B1=0,#DIV/0!,"入力済") も有効です。

yamutya
質問者

お礼

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。 「不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。」 なるほど そうですね。 納得いたしました。 ありがとうございました。

  • yuu_yuu
  • ベストアンサー率41% (34/81)
回答No.3

驚きです@@; =""と記述してある、セルをコピーして、別のセルに「値の貼付け」すると巣の貼り付けを行なったセルは、 見た目は未入力セルと何ら変わりませんが、Ctrl+↓で未入力ではないセルとなってしまうのですね。 初めて知りました!! 質問者様は、「マクロの記録」を使用してかなり複雑な作業をこなしてると想像してます。 「マクロの記録」を卒業して、「マクロを作成する」にステップアップされてはいかがでしょう? まずは、「マクロの記録」で作成された、物をAlt+F11で(左に表示される標準モジュール内にあります)眺めて見て、 Ctrl+↓の部分をDo Whileなどのループでセルを一つずつ確認し""(空白)なセルの場合、処理をする と言った感じです。 命令や文法は、「VBA 入門」でググレば、たくさんサイトが見つかると思います。 覚えてしまえば、「マクロの記録」では出来なかったことや、面倒だったことが、簡単に出来るようなります。 最初は戸惑うことが多いと思いますが、がんばってみてください。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセル に対してそれぞれ  =COUNTA(アドレス) を試してみてください。結果は「空白セル:0」、「""を値貼り付けしたセル:1」になります。 エクセルは「Null値」が入力されたセルと判断しているのです。 >ショートカットキーでとばせるメリットがなくなります マクロで文字長が「0」のセルをクリアする方法はどうですか? 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 アクティブシートの選択されているセル範囲の「値の長さ=0」のセルをクリアするマクロです。ただし関数式でNullを表示しているセルもクリアされますのでご承知おきください (マクロの実行結果はUNDOで戻せませんのでブックは予めセーブしておいてください) Sub NullClr() Dim r As Range  Application.ScreenUpdating = False  If TypeName(Selection) = "Range" Then   For Each r In Selection    If Len(r.Value) = 0 Then     r.ClearContents    End If   Next r  End If  Application.ScreenUpdating = True End Sub

yamutya
質問者

補足

ありがとうございます。 マクロ(VBA)での解決策 参考になりました。 欲を言えば =if(B1=0,****,"入力済み") この **** の部分に Null さえも 入力させないような工夫はないでしょうか。 (シート上での操作にこだわってすみません)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

表示上の問題ではなく、セルに何か(式や値)が入力されている限りブランクとは違います。 従って、関数が入っているなら「未入力セル」ではありません。

yamutya
質問者

補足

もちろん関数で表示させたそのままの状態ではありません。 関数で表示させた後で コピー 形式を選択して貼り付け 値貼り付け を実行してあります。それでも「未入力セル」とは異なるので その点を質問したつもりです。

関連するQ&A

専門家に質問してみよう