家・車以外で、人生で一番奮発した買い物

いつもお世話になります。
見た目は空白セルなのですが、そこには「=IF(F43="","",$B$2)」のような数式が入っていて空白になっているだけです。このようなセルがあるときに、「ctrl+A」を使うと数式の入った空白セルもすべて選択されてしまいます。そうならないような、空白を空白として認識させる方法はありますか。

A 回答 (8件)

No7です。



>短文ですけど、理解が出来ない文ですね。
あぁ、すみません。面倒なので、ショートハンドを使っちゃいました…

>B列には数式入っています。
B列は「入力」と書いてあったので、てっきり関数式は無いものと思いましたけれど・・・
では、いずれにしろNo7ではうまくいきませんね。

内容を訂正して、普通に書くなら、
※ 動作や注意事項はNo7と同じです。
※ 同じ行のA列、B列は片方だけ空白になることはないと解釈しています。

Sub Sample()
 Dim n As Long
 n = Application.Evaluate("SumProduct((A5:A10 <> """") * 1)")
 If n Then Range("A5").Resize(n, 2).Select
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。上手く行きました。
何度も丁寧に説明して頂きありがとうございました。
すぐに答えられるのは素晴らしい知識をお持ちですね。

お礼日時:2021/05/13 01:00

No6です。



>セルはB5,B6と順番に埋まっていくので、
>飛び飛びの範囲になることはないです。
であることを前提にできるのなら、更に簡単になります。(実質1行)
ご指定の「Ctrl+A」などは無視させていただいていますが、以下ではいかがでしょうか?

※ B列には関数式は無いものと仮定しています。
※ B5:B10全てが空白の場合は何もしません。

Sub Sample()

If [CountA(B5:B10)] Then Range("A5").Resize([CountA(B5:B10)], 2).Select

End Sub

>それをマクロに組み込みたいなと考えています。
シートはデフォルト(=Activesheet)として記述してありますので、他のマクロに組み込むのなら、そのあたりをご注意ください。
    • good
    • 0
この回答へのお礼

ありがとうございます。短文ですけど、理解が出来ない文ですね。B列には数式入っています。

お礼日時:2021/05/12 22:52

No5です。



>A5:B10の2列が対象になっており、~~
範囲がA5:B10限定と決まっているのなら、かなり単純化できます。

>B列に値が入らない時、隣のA列は数式のみで空白が表示される数式になっています。
ということは、必ず同じ行が空白になると限定しても良いということと解釈しました。

>説明が難しいですが理解して頂けたでしょうか。
まだ、わかりかねます。

例えば、A5:B10の範囲で、A7:B7及びA9:B9が空白となっている時に、
>あるセルを基準に~~
規準にするセルは「アクティブセル」だと思いますが、上記の状態で、仮に、A5セルがアクティブ(=基準)の時に、選択したい範囲は、A5:B6で良いのでしょうか?
それとも、A5:B6,A8:B8,A10:B10の範囲でしょうか?

もしも後者であれば、基準となるセルは処理とは関係がなく、「A5:B10の範囲で値が空白でないセルを全て選択する」という内容と同値になると思います。
これを更に言い換えれば、「(関数式のない)B5:B10で値のあるセルを選択し、それをA列まで拡張する」と同じことになると考えられます。
もしも、ここまで言い換えても良いのなら、ご質問の処理は、とても簡単なものになるでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。セルはB5,B6と順番に埋まっていくので、飛び飛びの範囲になることはないです。

お礼日時:2021/05/12 21:48

こんにちは



>隣接しているので1つの範囲にしたいです。
「隣接している」の考え方に二通りありそうに思えます。

>あるセルを基準に、例えばCtrl+Aでセルに値が入力されている部分を選択したいのです。
>その時に数式が入ってはいるが空白になっているセルは選択されないようにしたいのです。
仮に、先に空白に見えているセルの数式を削除してからCtrl+Aで選択される範囲と、文章通りにそのままCtrl+Aで選択される範囲とは異なる可能性がありますが、どちらなのでしょうか?

例えば、A1:C10の範囲で、A列とC列に値があり、B列には空白となる数式が全てあるとして、Ctrl+AではA1:C10全体が選択されますが、B列の数式を全て削除してからCtrl+Aでは、元の選択セルの列のみが選択範囲となります。

文章通りの場合は、ActiveCell.CurrentRegion(=Ctrl+Aとほぼ同じ:空白セル選択時の結果が異なる)から、値が空白のセルを除けばよいので、比較的簡単にできます。
そうでない場合は、結果が空白の数式を実際に消してしまうわけにはいかないので、チョット工夫が必要になります。
    • good
    • 1
この回答へのお礼

前にも教えて頂いたような、いつもありがとうございます。他の方ならそんなことしないと言われそうですが、とりあえず今は、A5:B10の2列が対象になっており、B列に値が入れば、となりのA列にも値が入るような数式になっています。B列に値が入らない時、隣のA列は数式のみで空白が表示される数式になっています。例えばB5とB6に値が入ったらA5:B6が選択されるようにしたいのですが現状だと数式が入っているため、どんな時もA5:B10が選択されてしまいます。
説明が難しいですが理解して頂けたでしょうか。よろしくお願いしますか

お礼日時:2021/05/12 19:22

>それをマクロに組み込みたいなと考えています。


VBAで数式が入っているセルかどうかを判断したいという事でもないんですよね?
If Not Cells(2, 2).HasFormula Then
MsgBox "数式なし"
ElseIf Cells(2, 2).HasFormula Then
MsgBox "数式あり"
End If

選択前と選択後の写真を見せていただくことは可能ですか?
これ(選択前)をこう(選択後)したいというのが分かれば、
他の方からの回答も付きやすくなるのではないかと思います。
    • good
    • 0

ジャンプ機能だと選択したい範囲に空白が含まれていたらそれが除外されてしまいますからね。



選択したい範囲に数式ではなくて、範囲全部が埋まっている列はないのですか?
    • good
    • 0

そうでしたか。



私が試した限りだと、下記の方法で
「数式が入ってはいるが空白になっているセルは選択されない」
という状態になりますが、質問者さんの場合はどういう状態になりましたか?

0.Ctrl+A を押します。
1.Ctrl+G を押します。
2.セル選択 を押します。
3.下記にチェックを入れます。
  ●定数
   ■数値
   ■文字
   ■論理値
   ■エラー値
4.OK を押します。
    • good
    • 0
この回答へのお礼

教えて頂いたのを少し変更して、該当せるを選択出来るようにはなったのですが、これは1つ1つのセルが独立して選択されるのですね。
確かにその通りだと思うのですが、今回私が考えているセルは隣接しているので1つの範囲にしたいです。
それをマクロに組み込みたいなと考えています。

お礼日時:2021/05/12 13:55

下記の方法で希望通りになりますか?



1.Ctrl+G を押します。
2.セル選択 を押します。
3.下記にチェックを入れます。
  ●定数
   ■数値
   ■文字
   ■論理値
   ■エラー値
4.OK を押します。
    • good
    • 0
この回答へのお礼

ありがとうございます。
うーん、思っているものと異なります。あるセルを基準に、例えばCtrl+Aでセルに値が入力されている部分を選択したいのです。その時に数式が入ってはいるが空白になっているセルは選択されないようにしたいのです。

お礼日時:2021/05/12 12:19

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

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


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