[[20040424045252]] 『空白なのに空白でない?』(よれっち) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『空白なのに空白でない?』(よれっち)

 COUNTITで""をカウントすると、ちゃんと数えてくれます。
 ""のセルがランダムに300くらいあったので、CTRL+Gで「空白セル」を選択したら
 「ありません」とかって言ってくるです。

 ""と認識しているはずなのに空白じゃない、いったい何が入ってるんでしょう?
 数式バーはもちろんブランク、書式も標準でした。

 空白セルに「未」と入力したかったので、回避策としてフィルタをかけ、
 「・・・と等しくない」でソートしたものを選択し、入力後CTRL+ENTERで処理しまたが
 疑問は晴れることなく、眠れなくて朝になってしまいました。。。
 誰かご存知の方、いらっしゃいますか?

 >CTRL+Gで「空白セル」を選択したら 「ありません」とかって言ってくるです。
この部分に間してはアクティブセル領域外の場合は可能性があります。
アクティブセル領域はShift+Ctrl+Endで範囲選択される領域で、シートに
入力履歴のあるセル範囲です。この範囲外で「空白セル」へのジャンプを実行
しても「該当セル無し」になります。
多分これと同様の問題だとは思いますが、しかし、この領域はCOUNTIFでもカウント
されないのでちょっと違うかもしれません・・・。
(KAMIYA)

 アクティブセルというのは、セル色が反転している状態ですよね。。。
 範囲選択した状態で、ということですよね。
 ええ、選択してジャンプしたんですが、そうなってしまうんです。
 このような時は、どこを調べたらピュアにブランク(言い方が変?)かどうか解るのでしょうか。
 KAMIYAさん、どうか解明してください(>_<)
 (よれっち)

 任意のひとつのセルを選択した状態でCtrl+Gで空白セルジャンプ
したらどうなるでしょうか。これで空白セルが選択されなければ、
「空白セルは入力履歴のあるセル範囲にはない」
という結論になると思います。
その上でA1セルからShift+Ctrl+Endで選択できる範囲を
COUNTBLANK関数でカウントして0以外の数値が返るか調べてみてください。
これで0以外の数値が返ってくるようだと、ちょっと原因も思いつきません。
 
ちなみに、アクティブセル領域とは単に選択範囲のことでなく、
A1を選択した状態からShift+Ctrl+Endで選択できるセル範囲のことを
指して書いたつもりでしたが、どうも用語としては使われていないみた
いですね。
訂正します。
ヘルプでは「データが入力されている範囲」と表現されています。
(正確にはデータが入力されたことのあるセル範囲)
 
(KAMIYA)

 おそるおそる。
 「’」が入っているのでは?
 countifでは空白としてカウントしますけど、Ctl+Gでは空白として認めてもらえん
 みたいですけど・・・。
 ちゃいまっか?(弥太郎)

 なんかわたしゃ見当違いの事考えとるんかしらん?
 その空白セルの範囲を選択して実行してみておくんなはれ。
      (弥太郎)
 '---------------------------------------
  Sub blnk()
    Dim Cnt As Integer, n As Integer
    Dim x
    Dim tbl As Range

    Set tbl = Selection
    On Error Resume Next

    n = Application.WorksheetFunction.CountIf(tbl, "")
    MsgBox "IF文での空白セルは" & n & "個です"

    x = tbl.SpecialCells(xlCellTypeBlanks).Count
        tbl.SpecialCells(xlCellTypeBlanks).Select
        Call get_tbl(x, Cnt, tbl)
        MsgBox "実質の空白セルは" & Cnt & "個です"

    x = tbl.SpecialCells(xlCellTypeConstants).Count
        tbl.SpecialCells(xlCellTypeConstants).Select
        Call get_tbl(x, Cnt, tbl)
        MsgBox "定数は" & Cnt & "個です"

    x = tbl.SpecialCells(xlCellTypeFormulas).Count
        tbl.SpecialCells(xlCellTypeFormulas).Select
        Call get_tbl(x, Cnt, tbl)
        MsgBox "数式は" & Cnt & "個デス。"

    x = tbl.SpecialCells(xlCellTypeAllFormatConditions).Count
            tbl.SpecialCells(xlCellTypeAllFormatConditions).Select
        Call get_tbl(x, Cnt, tbl)
        MsgBox "条件付書式" & Cnt & "個デス。"
        tbl.Select
    On Error GoTo 0
 End Sub
 '---------------------------------
 Sub get_tbl(x, Cnt, tbl)
        If Not IsEmpty(x) Then
            Cnt = x
        Else
            tbl.Cells(1, 1).Select
            Cnt = 0
        End If
        x = Empty
 End Sub

 エラーが出るみたいなんで変更↑
     (弥太郎)


 まず、KAMIYAさんのおっしゃるとおりやってみたら、空白セルは
 私が空白と認識してほしいセル「以外」を指しました。
 そのセルを範囲としてCOUNTBLANK関数でカウントしたら「202」と返してきました。
 弥太郎さん、マクロはどうやればいいのでしょうか。
 ALT+F11から標準モジュールを開いて、そこに上記テキストを貼り付けました。

Sub get_tbl(x, Cnt, tbl)

        If Not IsEmpty(x) Then
            Cnt = x
        Else
            tbl.Cells(1, 1).Select
            Cnt = 0
        End If
        x = Empty
 End Sub

 ですよね?そして?次はどうしたらいいんでしょうか?
 すみません、マクロは判りませんので(ーー;)

 と言うか、このセルを直にに見て探しいほしい気分です。
 (よれっち)


 >私が空白と認識してほしいセル
というのは、「まだデータを入力したことがないセル範囲」ではないですか。
ためしに、「空白と認識してほしいセル」の範囲の右端最下行のセルに
何か入力して即DEL、「空白と認識してほしいセル」の範囲を選択して
「ジャンプ」で空白セルを選択したらどうなります?
(KAMIYA)


 >ためしに、「空白と認識してほしいセル」の範囲の右端最下行のセルに
 >何か入力して即DEL、「空白と認識してほしいセル」の範囲を選択して
 >「ジャンプ」で空白セルを選択したらどうなります?

 デリートしたセルへジャンプしました。(よれっち)

 >>「ジャンプ」で空白セルを選択したらどうなります?
 >デリートしたセルへジャンプしました。
やはり、何かのデータが入っているような・・・。
「空白と認識してほしいセル」のセル範囲はCOUNTBLANKでカウントできますか?
(KAMIYA)


 はい、カウントします。(よれっち)


 1.COUNTBLANKでカウントできる
2.数式バーには何も表示されない。
3.「編集」「ジャンプ」「セル選択」で「空白セル」で選択できない
 
セル内に「=""」が入力されていて、数式非表示、シート保護設定すれば
1.2.は満たしますが、3.が実行できない、
シート非保護で「=""」「'」が入力されているなら、数式バーには見えるはず。
うーん、再現ができないなあ。
「空白に認識できて空白でない、何かが入力されている」?
あとは=CODE(セル番地)で調べるとかぐらいしか思いつかない・・・。
誰かわかる人いませんか〜?
(KAMIYA)

 空白を認識しないセルで、ただダブルクリックしただけで、別のセルをクリックすると
 空白を認識しないセルが空白を認識するようになりました。
 結局どういうことなんでしょうね(笑)
 ダブルクリックする前って、じゃぁ一体何が入ってるんでしょうね?
 (よれっち)

 一つの可能性として、こういうこともありますということで、(今回の場合に該当するかは分かりませんが)。
 例えば、
 A1に 1
 A2に 空白(未入力)
 A3に ="" ← ""を返す数式、または ' 。
 A4に 2
 として、A1:A4をコピーして、B列に値貼り付けします。
 ここからは、範囲(B1:B4)に関しての場合。
 見た目では、B2、B3に違いはなく、各セルを選択して数式バーを見ても違いはありません。
 しかし、ジャンプで、空白セルを選択すると、B2のみが選択され、B3は選択されませんが、
 ジャンプ→定数→文字とすると、B2は選択されず、B3は選択されます。
 C1に =ISBLANK(B1) として、下にコピーすると、C2はTRUEで、C3はFALSEになります。
 これは、B3は、全くの空白(未入力)ではなく、""の値が入っている状態で、""の文字データとして認識されています。
 ISBLANK関数は、空白(未入力)か否かを判断しているものと思います。
 ただし、=COUNTBLANK(B1:B4)、=COUNTIF(B1:B4,"")は2の値を返します。
 ISBLANK と COUNTBLANK や COUNTIF では、ブランク(空白と"")の解釈が違ってきますね。
 ジャンプでの、空白セルというのは、全くの未入力状態、
 つまりは、ISBLANK関数でTRUEを返すセルを指すものと、私は解釈しています。

 ご質問者のデータが、数式で""を返したもの(または、' を入力したセル)を、コピーして値貼り付けたしたものであったり、
 値貼り付けしたものを、そのままコピーしたものであった場合は、今回のようなことは、起こり得ますね。

 ""の入ったセルを、空白にするには、範囲選択後、データ→区切り位置→完了で変換することができます。
 (列単位の処理しかできないので、複数列の場合は、各列ごとの処理となります。)
 (kkk)

 遅うなってごめんなはれや。
 更にゴメンはマクロをご存じないんでしたら、
 Alt+F11で標準モジュールを選択してコードをコピペして(Alt+Qでエクセルに戻り)
 その曰く付きの空白セル範囲を選択してAlt+F8でblnkを実行すればそのセルに何が
 入っているかMSGBOXで教えてくれますワ。

 > このセルを直にに見て探しいほしい気分です。
 つまりこれです。
 もしこれでMSGBOXに0ばかり並んだらお手上げですわ。もっとちゃうモンがはいっと
 るん(例えばインベーダーとか(笑))でっしゃろ。
     ほな、お役にたてんかったんやったらゴメン(弥太郎)


 >kkkさん
ほんとだ!値貼付したセルはセルデータがない(ように見える)のに、
空白セルジャンプできない・・・。しかもCOUNTBLANK、COUNTIFでは
カウントする・・・。
CSVにしてみたら、クリアな2行目は空白行(改行のみ)ですが、
3,4行目には間違いなくカンマだけはその範囲にあります。
うーむ、「値貼付」恐るべし。勉強になりました。
(KAMIYA)

 弥太郎さーーーーん(>_<)
 >Alt+F8でblnkを実行すればそのセルに何が
 >入っているかMSGBOXで教えてくれますワ。
 オルトF8で、ダイアログボックスを開いたあと、どのボタンを押すんですかぁ?
 「キャンセル」のボタン以外はグレーアウトしてるんです(T_T)
 (よれっち)


 よれっちさんからファイルが届きました。

http://www.excel.studio-kazu.jp/wiki/excelboard/20040424045252/blank2.xls

 (kazu)


 とりあえず次の方法で、A列の「空白に見えて空白でないセル」を「本当の空白」
にできることを確認。A列を選択した状態で
「編集」「置換」で「検索文字列」を未入力のまま、「置換文字列」を「FALSE」に全置換。
べつに他の値やなんかでもよかったんですが、論理値をセルの帰り値としてそのまま使う
人は少ないだろうと予測しての選択。
この時点で「ジャンプ」「セル選択」で「定数-論理値」でジャンプ可。
「本当の空白」でセットするには逆の手順で
「編集」「置換」で「検索文字列」を「FALSE」、「置換文字列」を未入力のまま全置換。
「空白セル」へのジャンプが可能になります。
(KAMIYA)

 よれっちさんが作成されたブックの元データがAccessかどうかは
わかりませんが、AccessからExcel形式にエクスポートした場合に
このような現象が起きる事があるそうです。(Yosh!)

 [ACC2002] 空白値を含むテーブルを Excel 形式としてエクスポートした場合、
 空白セルとして認識されない
http://support.microsoft.com/default.aspx?scid=kb;ja;411174


 みなみなさま、本当に有難うございましたm(__)m
 なるほど、ジャンプできるようになりました!>KAMIYAさん
 kazuさん、お手数をお掛けいたしました。
 Yosh!さん、原因究明有難うございました!
 なるほど、アクセスのデータだったんですか。。。
 もらった時点ではすでにエクセルだったので解りませんでした。
 色々と有難うございました(^o^)丿
 (よれっち@大満足)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.