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

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

A 回答 (5件)

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。



未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

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

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。

つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね?

だったら簡単です。

すべての式を
=if(B1=0,"","入力済")
ではなく
=if(B1=0,1/0,"入力済")
にしておきましょう。

すると、未入力の所は、空白("")にならず「#DIV/0!」になります。

そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。

「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。

セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。

「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。

「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。

もちろん、大量にあっても、手順は変わりません。
    • good
    • 16

追記で補足説明。



先ほどの回答で
>「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。
と書きました。しかし、ある種の「異常な状態」は返せます。

それが「0で除算した状態」で、実際に式に書くと
>=if(B1=0,1/0,"入力済")
と言う事になります。

なお「式でエラー値を返す場合」は
=if(B1=0,1/0,"入力済")
の他
=if(B1=0,#NULL!,"入力済")

=if(B1=0,#REF!,"入力済")

=if(B1=0,#DIV/0!,"入力済")
も有効です。
    • good
    • 4
この回答へのお礼

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

なるほど そうですね。
納得いたしました。
ありがとうございました。

お礼日時:2008/03/19 16:26

驚きです@@;



=""と記述してある、セルをコピーして、別のセルに「値の貼付け」すると巣の貼り付けを行なったセルは、
見た目は未入力セルと何ら変わりませんが、Ctrl+↓で未入力ではないセルとなってしまうのですね。
初めて知りました!!

質問者様は、「マクロの記録」を使用してかなり複雑な作業をこなしてると想像してます。
「マクロの記録」を卒業して、「マクロを作成する」にステップアップされてはいかがでしょう?

まずは、「マクロの記録」で作成された、物をAlt+F11で(左に表示される標準モジュール内にあります)眺めて見て、
Ctrl+↓の部分をDo Whileなどのループでセルを一つずつ確認し""(空白)なセルの場合、処理をする
と言った感じです。

命令や文法は、「VBA 入門」でググレば、たくさんサイトが見つかると思います。

覚えてしまえば、「マクロの記録」では出来なかったことや、面倒だったことが、簡単に出来るようなります。

最初は戸惑うことが多いと思いますが、がんばってみてください。
    • good
    • 1

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセル


に対してそれぞれ
 =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

この回答への補足

ありがとうございます。
マクロ(VBA)での解決策 参考になりました。

欲を言えば
=if(B1=0,****,"入力済み")
この **** の部分に Null さえも
入力させないような工夫はないでしょうか。
(シート上での操作にこだわってすみません)

補足日時:2008/03/19 15:19
    • good
    • 2

表示上の問題ではなく、セルに何か(式や値)が入力されている限りブランクとは違います。


従って、関数が入っているなら「未入力セル」ではありません。

この回答への補足

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

補足日時:2008/03/19 15:06
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング