ここから質問投稿すると、最大4000ポイント当たる!!!! >>

例えば、=if(A1="","","該当無")とB1に入力したとします。

A1に何も入力されていなければ、B1はもちろん空欄となりますが、
編集→ジャンプ→セル選択→空白セルを選択してもヒットしません。

計算結果が空欄の場合は、最終的にそのセルは空欄にしたいのですが良い方法はないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは



ご承知のことかもしれませんが、、、。
数式の結果としてNull値を返すことはできません。
> =if(A1="","","該当無")
真の場合、「長さゼロの"文字列"」が返ります。
目的に近い書き方で、=IF(A1="",,"該当無")
これでNullが返りそうなものですが、実際は「ゼロ値」です。
(というよりシート上にNull値を返すとゼロ値になります)

お察しのように、一旦、何かしらの値を返しておいて、
ジャンプ機能で仕分けした範囲の値を消去する、
という手順が必要になるのですが、
今のままでは、すべてが文字列を返していることになるので、
分けられませんよね。
そこで、、、文字列でなければ何でも良いのですが、
(このレベルの数式を書く方なら、エラー値をそのまま返す数式を放置していない筈ですから)
判別用にエラー値を使ってみます。

1)
=IF(A1="",1/0,"該当無")
とB1に入力。

2)
編集→ジャンプ→セル選択→数式→エラー値。

3)
Del キー。

A1セルが
""ならば、1/0、つまりエラー値、
でなければ、文字列。
ジャンプ機能でエラー範囲を選択、
消去する。

・・・みたいなことをなさりたいのかと、、、。
(必要なら事後、1/0を""に置換するとか)

ただ、
「長さゼロの文字列」については、
わざわざ消す必要がある程の曲者ではないと思います。
目に見えないから余計に気になるだけのことではないでしょうか。
#2さんご指摘のように、
関数での扱い方を正すことの方が重要で、
スキルを高める意味でも、優先するべきことだと私も考えます。

一応、
表の外に「長さゼロの文字列」が残るような使い方だけは、
ファイルサイズ肥大化の原因にもなりますから、
注意が必要です。
逆に、表の内側にある場合は、消しても消さなくても、
差は殆どありませんので、念の為。

私は、消す、機会がわりと多いのですけれど、理由はかなり特殊です。
「何故、空白セルにする必要があるのか?」を伝えることができれば、
もっと的確な回答が得られるのかも知れません。

察しが外れてたらごめんなさい。
    • good
    • 5

式が入力されていて空白になっている状態を無視できるような使い方をすることでしょう。


例えば=COUNTAなどではそのセルも数えられますが,COUNT関数やCOUNTIF関数などで回避できますね。
    • good
    • 3

> セル選択→空白セルを選択してもヒットしません。



だって空白じゃなく数式がはいってるじゃないですか?

> 計算結果が空欄の場合は、最終的にそのセルは空欄にしたいのですが良い方法はないでしょうか?

いったい何をしたいのか書いた方が良い回答がつくのではないでしょうか?
たとえば空白として数えたいならCOUNTBLANK関数で拾えます。
ほんとに何もなくしたいのならマクロになります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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

Aベストアンサー

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

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

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

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

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

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

だったら簡単です。

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

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

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

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

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

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

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

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

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

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

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

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

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショ...続きを読む

QIF関数でEmpty値を設定する方法。

こんにちは。
IF関数でEmpty値の設定方法を知りたいと思っています。
ゼロと値なしを分けるため、セルに対して値なしで有れば
IF関数にて""をセットしていますが、SUMPRODUCTで集計を
掛けた場合にエラーとなります。
そこで""ではなくEmpty値をセットしたいのですが、
方法をご存知の方いらっしゃれば宜しくお願い致します。

(例としては下記です。)
=if(A1>5,"",A1)をB1にセットし、
これを複数セル(B2:B10)に複写します。
(A1:A10)は0から9までの連番を入れます。
また、(C1:C10)には0から9までの連番が入っています。
B列には結果として0,1,2,3,4,5,空白となります。

これをSUMPRODUCTにて集計を掛けると
=SUMPRODUCT((C1:C10)*(B1:B10))
#VALUEエラーとなります。
しかしながら、B7:B10を削除してEmpty値とすると
正常に計算されます。

Excel2000/Excel2002です。
「Empty値」と「""」と「0」の値の件では度々このようなミスをしていましたので、この際解決したいと思っています。
尚、条件としてゼロは値として必要で、表示しなければなりません。
値なしは値なしとして空白を表示しなければなりません。
ご存知の方宜しくお願い申し上げます。

こんにちは。
IF関数でEmpty値の設定方法を知りたいと思っています。
ゼロと値なしを分けるため、セルに対して値なしで有れば
IF関数にて""をセットしていますが、SUMPRODUCTで集計を
掛けた場合にエラーとなります。
そこで""ではなくEmpty値をセットしたいのですが、
方法をご存知の方いらっしゃれば宜しくお願い致します。

(例としては下記です。)
=if(A1>5,"",A1)をB1にセットし、
これを複数セル(B2:B10)に複写します。
(A1:A10)は0から9までの連番を入れます。
また、(C1:C10)には0から9まで...続きを読む

Aベストアンサー

こんばんは。Wendy02です。

=SUMPRODUCT(B1:B10,C1:C10)
>条件で抽出する必要があるため、配列を分けられてはダメです。

意味が良く分かりません。単なる合計計算を出したいのではありませんか?以下で、例をつけて、もう一度、説明しなおします。

それで、#5 さんの回答で解決をついているのでしたら、こちらは、これ以上は、何も言えません。

ただ、Null という説明は、ワークシートではエラー値 「#NULL!」 としかないもので、それ以外には、Excelのワークシートでは事実上使いません。

Access やOffice VBAで使われるものです。それ以外は、現在のMicrosoft Office では使われないと思います。英語では、Nullというのは、元はゼロの意味を表しますが、VBAなどでは、明示的に Null と使うもの以外には存在しないものです。意味は、値が存在しないか、不定だということです。それに、「""」 は、長さ0の文字列と呼びます。Empty というのは、何も入れてない状態で、これも、VBAで使われるものですが、英語では、Empty は、空の状態 Blankと同義で、VBAのIsEmpty() は、ワークシート関数の ISBLANK()と同じ働きを持っています。

しかし、その説明の延長上に解答があるとは私には思えないのですが、それとも、私が質問を理解していないのかもしれません。ただ、今までのパターンからすると、そのような例というのは、覚えがありません。今回、私の書いた数式の仕様は、あまり、みなさんが知らないことだとは思います。

-----------------------------------------
  A   B  C
1  8     0
2  7     1
3  6     2
4  7  0  3
5  6     4
6  4  4  5
7  5  5  6
8  9     7
9  8     8
10  9     9

B1 ~フィルダウン・コピー 10 行目まで
=IF(A1>5,"",A1)
ただ、B4 は、手入力で、0 を入れた。
-----------------------------------------

この状態で、実際は、上記のような表の場合、(0 *3) + (4 * 5) + (5 * 6 ) で、「50」 になる、というようなことではないのかと、最初のご質問で解釈しました。

=SUMPRODUCT((C1:C10)*(B1:B10)) で、"" が途中で入れば、エラーが出ます。これは、SUMPRODUCT の引数の中の計算から始めるという、数式の特徴があるからです。

#1 さんの =SUMPRODUCT(IF(B2:B10<>"",B2:B10,0)*(C2:C10)) 

は、これは、SUMPRODUCT 自体が働きませんので、そのままでは、#VALUE!エラーが出ます。[回答への補足]は、[配列確定]をしたら、エラーが出なかった、ということではないか、と読みました。

こういう状態なら、=SUMPRODUCT((C1:C10),(B1:B10))

は、もともと、SUM関数と同じ仕様を持つこの関数は、「""」もEmpty(ブランク)も、文字列も同様に省きますから、数値だけを拾って計算をします。例えば、「""」の代わりに、「"なし"」としても、解は同じです。SUMに関係する関数には、数値でないという条件(節)を必要としません。他には、PRODUCT という関数があります。

これは、試してみれば一目で分かることです。上記の例の場合は、「50」という解が出ます。それをお分かりになっているのでしょうか?

>条件で抽出する必要があるため、配列を分けられてはダメです。
これが、一体、その後に、何の条件が付加されるのですか?こちらでは読み取れません。他に条件があるということでしょうか?

「0 」を数えるなら、
=COUNTIF(B1:B10,0)
ですし、

「""(長さ0の文字列) 」を数えるなら、
=COUNTIF(B1:B10,"")
または、
=COUNTBLNAK(B1:B10)

Empty=ブランクセルを探すなら、

=SUMPRODUCT(ISBLANK(B1:B10)*1)

しかし、これらの値のないセルに対して、それぞれの処理が変わるとしても、それは、いずれにしても、数値の掛け算の合計しかありえないはずです。

>ついては、[配列確定]を使いたくなかったので、テストしていません。

それに、他の人たちのは[配列確定]しなければ出ない解がほとんどですね。なのに、こちらには、なぜか[配列確定]は使いたくないという理由だけで、ダメにしてしまうのですね。他の人のは良いというわけですか?きちんと、条件を提示してくださったほうが、他の回答者さんのためでもあると思います。

私は、配列数式自体をお勧めするわけではありませんが、もし、配列数式を使いたくないのでしたら、補助の列を使って計算されたらどうですか?SUMPRODUCTの引数自体が、配列を使っていますので、配列確定をする数式だけが、配列数式ではありません。配列数式はとかく複雑になりやすいので、あまり手が掛かるようだった、最初からしないほうがよいです。

こんばんは。Wendy02です。

=SUMPRODUCT(B1:B10,C1:C10)
>条件で抽出する必要があるため、配列を分けられてはダメです。

意味が良く分かりません。単なる合計計算を出したいのではありませんか?以下で、例をつけて、もう一度、説明しなおします。

それで、#5 さんの回答で解決をついているのでしたら、こちらは、これ以上は、何も言えません。

ただ、Null という説明は、ワークシートではエラー値 「#NULL!」 としかないもので、それ以外には、Excelのワークシートでは事実上使いません。

Access...続きを読む

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

QエクセルでのNULLという文字列挿入について

エクセルで空白のセルに対してNULLという文字列を挿入したいのですが、
SUBSTITUTE関数を使ってやろうとたらNULLは0と判断されて0が入力されてしまいます。
NULLという意味ではなくて、NULLという文字列そのものを入力するときはどのようにしたらよいのでしょうか?

Aベストアンサー

NULLの前に『'』を入れます
半角の状態でshiftキー+7です。
文字列と認識され入力可能になるはずです。

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

よろしくお願いいたします

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。


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

人気Q&Aランキング