Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 : Excel 2013)
if関数の条件により表示しないの場合
投稿日時: 19/06/28 07:39:50
投稿者: rinahana

いつも お世話になっております。
 
例えば、テストのB列に得点50件があり、80点以上の人を"○”を表示する 場合
 C列に「if( B5>=80,"○","")」作成します。
 この場合、80未満の "" には、何があるのか 知りたいのですが
 というのは、セルC53にcounta(c2:c51) の結果が○の数ではなく
 全員の50という数字が表示されます。countif,やcountifsなどを使えるのはわかっています。
知りたいのは "" 部分を完全に何もない状態にしたいのですが、見えない部分に何があるのかは
あまり詳しくはわかりませんが、なにかあるというのは感じています・・・
全くなにもないことにしたいのですが 何か方法がありますか?
 宜しくお願いします。 

回答
投稿日時: 19/06/28 08:42:35
投稿者: 半平太

>全くなにもないことにしたいのですが 何か方法がありますか?
 
数式が入っているので、未入力のセルとは違います。
「""」は長さ0の文字列で、「空白文字」と呼ばれる文字列の一種です。
 
例えば、CountBlankのヘルプにこんなことが書かれています。
 
>COUNTBLANK 関数
> 空白セルの個数を求める・・
> 解説: 空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。
 
両者は別物であるが、この関数は一緒くたに取り扱うと解説されています。
 
>countif,やcountifsなどを使えるのはわかっています。
 
用意された関数を旨く組み合わせて対処するしかないと思います。

回答
投稿日時: 19/06/28 08:59:18
投稿者: WinArrow
投稿者のウェブサイトに移動

>セルC53にcounta(c2:c51) の結果が○の数ではなく
"○"の個数を数えたいのでしたら
=COUNTIF(C2:C51,"○")
という関数になります。
 
なお、数式で「何もない状態」(=空白)にすることはできません。
=COUNTIF(C2:C51,"")
で、空白文字列の個数を取得できますが、この方式ではダメ?

回答
投稿日時: 19/06/28 11:17:07
投稿者: コナミ

どうしても
 
>"" 部分を完全に何もない状態にしたい
 
ということなら、式を値にした後列を選択して
 
データタブ→区切り位置→完了
 
で見た目空白セルが全くの空白セルになるかと思います。

回答
投稿日時: 19/06/28 17:58:46
投稿者: WinArrow
投稿者のウェブサイトに移動

コナミさんのレス:「区切り位置」を使ってっも一挙の変換することができます。
代案として
数式の結果が「空白文字列」になっているセルを空白にする方法
  
おそらく飛び飛びのセルが空白文字列になっていると想定されます。
  
オートフィルタを使って一挙に空白にする方法を紹介します。
 今回は、C2〜C51に数式が入っているので、
 B1、C1の項目名をつけます。(すでに項目名があればそのままでよいです)
 1行目を選択してオートフィルタを設定します。
 C2〜C51セルを選択してから、
 C列の▼を選択して、「すべてを選択」のチェックを外し、(空白)にチェック入れます。
この場合、「空白」と「空白文字列」は同じと見做しています。
この状態で、「Delete」キーで数式が消えて、何もない状態になります。
オートフィルタを解除します。

投稿日時: 19/06/28 22:09:05
投稿者: rinahana

半平太 さん WinArrowさん コナミさん 
ありがとうございます。皆さんが教えてくれた、すべてを実行してみました。
本当にありがとうございました。
 
ただ、一つ コナミさんの
 
> 列を選択して データタブ→区切り位置→完了 の部分がわからないので、できませんでした。
もう少し、詳しくどうすればいいのかを 教えてもらえませんか?
お願いします。
 
と WinArrowさんのオートフィルタの処理ですが、VBAで処理できませんか?
 
おねがいします。

回答
投稿日時: 19/06/29 08:35:40
投稿者: もこな2

よこからですが、

rinahana さんの引用:
WinArrowさんのオートフィルタの処理ですが、VBAで処理できませんか?
について、
Q&A 掲示板ご利用上のお願い さんの引用:
■禁止事項
コード制作依頼
「●●●を実行するようなマクロを作りたいのですが」「●●●をする方法を教えてください」といった、コード制作依頼ともとれるような質問はおやめください。
に抵触しちゃうから、VBAを希望するならまずは自分でマクロの記録機能を使ってみて、どのような命令が必要かを調べ、一旦作成してみてから当該コードを提示したうえで、○○とおもったのに××になってしまう。
というような相談を ExcelVBAフォーラムのほうに投稿したほうが良いと思います。

回答
投稿日時: 19/06/29 09:35:34
投稿者: WinArrow
投稿者のウェブサイトに移動

素朴な疑問です。
 
なぜ、「空白文字列」を「空白」にする必要があるのですか?
逆にいうと、「空白文字列」では、どのような不具合があるのですか?
 
 
 
あと、
もこな さん、レスに追加して
 
なぜ、VBA対応が必要なのか?
どのようなつ使い方をするのか?
も併せて、説明しましょう。

投稿日時: 19/06/29 09:57:28
投稿者: rinahana

もこな2 さんへ
失礼しました。Excel(一般機能)の場で VBAの言葉がある 質問をしたことは 失礼しました。
私も稚拙ながら、VBAを利用しているので、VBAでできるか できないか? 簡単にできるか?
の質問で、プログラムを教えてください とは 言っていない つもりで 発言しました。どうもです。
 
で、「データ区切り位置」 の 正確な方法? を教えてください。
宜しく 

回答
投稿日時: 19/06/29 11:10:26
投稿者: WinArrow
投稿者のウェブサイトに移動

素朴な疑問の続きです。
 
数式の結果の「空白文字列」を「空白」に変更した後、
例えば、B列セルの「値」を変更/修正することはないのですか?
その場合、判定未満だった、数値が判定以上にしゅうせいされても
"○"が表示されることありませんが・・・・
 
また、C列セルを参照しているセルがあるとして
「空白文字列」も「空白」も同じに扱われます。

If(C2<>"","空白以外です","空白に見えます")
 
 

投稿日時: 19/06/29 12:13:20
投稿者: rinahana

WinArrowさんへ
疑問の点ですが、拙い表を作成していて、〇の数を「=COUNTA()」で表示しているので完全な空白が必要なだけですが・・・。

回答
投稿日時: 19/06/29 12:38:31
投稿者: 半平太

>countif,やcountifsなどを使えるのはわかっています。
 
その関数を使えば簡単に解決するのに、何故使っちゃいけないのか、
その理由を説明して貰えませんか?

投稿日時: 19/06/29 13:17:38
投稿者: rinahana

半平太さんへ
実はデータは1300件程あり 〇端折りずみ、空白は未処理ということで、VBAでコードを作成していますが、手作業で NULL?を未入力にしているので、何とか一括処理ができないか と考えているところです。
私の稚拙なコードでは NULLのセルを確実に判断できないもので・・・
今 現在は手作業で 空白に見えるセルを探して、delete キーを押して やっています。
 
 WinArrowさんのオートフィルタで随分高速処理になりましたが、・・・
 
以上です。

回答
投稿日時: 19/06/29 13:28:23
投稿者: WinArrow
投稿者のウェブサイトに移動

rinahana さんの引用:
半平太さんへ
実はデータは1300件程あり 〇端折りずみ、空白は未処理ということで、VBAでコードを作成していますが、手作業で NULL?を未入力にしているので、何とか一括処理ができないか と考えているところです。
私の稚拙なコードでは NULLのセルを確実に判断できないもので・・・
今 現在は手作業で 空白に見えるセルを探して、delete キーを押して やっています。
 
 WinArrowさんのオートフィルタで随分高速処理になりましたが、・・・
 
以上です。

 
いまいち、説明が理解できません。
1300件程のデータをVBAで作成しているんですか?
>○は処理済、空白は未処理
冒頭の説明とまったく内容が違いますね?
 
「空白文字列」を「空白」に変換する意図の説明にはなっていませんが・・
 
それからセルには、"Null"は存在しません。
若し、VBAでデータを作成しているならば、
"○"も数式ではなく、VBA、で入れたらいかがですか?
 
 
 

回答
投稿日時: 19/06/29 13:47:54
投稿者: WinArrow
投稿者のウェブサイトに移動

 
レスを見逃していました。失礼しました。
  

rinahana さんの引用:
WinArrowさんへ
疑問の点ですが、拙い表を作成していて、〇の数を「=COUNTA()」で表示しているので完全な空白が必要なだけですが・・・。

 
○の個数を知りたいだけでしたら、
半平太さんも回答していますが、
  
 =COUNTIF(C2:C51,"○")
で求められます。
この関数は、なぜ使わないのですか?
 
 「空白文字列」を「空白」にする必要はありません。
  
これでは、ダメなんですか?

回答
投稿日時: 19/06/29 20:17:32
投稿者: コナミ

>式を値にした後列を選択して
 >データタブ→区切り位置→完了
 
端折って書いているように思われるかも知れませんが、特に手順を省略はしていません。
まず、書いている通りにやってみたのでしょうか?
どこまでやってみて、どこからわからないか書いてもらわないとこちらも何とも言えません。

回答
投稿日時: 19/06/30 10:36:38
投稿者: WinArrow
投稿者のウェブサイトに移動

>私の稚拙なコードでは NULLのセルを確実に判断できないもので・
に関する参考情報
 
セルには"Null"は存在しません。(前レス)
 
セルになにも入っていないことを確認するコード
ワークシート関数:=ISBLANK(C1) → True
と同じことをVBAで記述
@If IsEmpty(Range("C1").Value) Then
または
AIf Range("C1").Value = "" Then
または
BIf Len(Range("C1").Value = 0 Then
 
※Aに対応するワークシート関数
=IF(C1="",True時処理,False時処理)
※Bに対応するワークシート関数
=IF(LEN(C1)=0,True時処理,False時処理)
 
 
セルのの値が「空白文字列」であることを確認するコード
CIf Range("C1").Value = "" Then
または
DIf Len(Range("C1").Value) = 0 Then
 
※Cに対応するワークシート関数
=IF(C1="",True時処理,False時処理)
※Dに対応するワークシート関数
=IF(LEN(C1)=0,True時処理,False時処理)
 
以上で分かると思いますが
@は、どうしても「空白」であることを確認するときに使います。
それ以外は、「空白」を「空白文字列」を区別する必要がないときに使えます。
 
重ねて書きますが、
Range("C1").Value = Null というような構文は、「空白」を認識できません。

回答
投稿日時: 19/06/30 10:48:51
投稿者: WinArrow
投稿者のウェブサイトに移動

ついでだから、もう一つのアドバイス
 
同じことをするならば、
ワークシート入力した数式の方が、VBAより、断然早いです。
数式でできるならば、敢えてVBAに頼る必要がありません。

投稿日時: 19/06/30 11:36:28
投稿者: rinahana

コナミさんへ WinArrowへ

引用:
データタブ→区切り位置→完了

ですが、そもそも 区切り位置は何を処理するのですか?
それで 区切りをすることで、空白に見える文字?がどうなるのですか?
 
ほとんど 私の必要と思っていたことは お陰様で皆さんのお教えで
納得できましたが・・・
区切り位置だけが 今一つ分かりませんでした。
 
WinArrowさんの
 
引用:
If IsEmpty(Range("C1").Value) Then

 
は存在は知っていましたが ほとんど使ったことはありませんでした。
ありがとうございました。

回答
投稿日時: 19/06/30 12:03:05
投稿者: WinArrow
投稿者のウェブサイトに移動

IsEmpty

引用:
は存在は知っていましたが ほとんど使ったことはありませんでした。
ありがとうございました。

 
どうしても、「空白」でなければ行けない場合にだけ
有効な命令で、ほとんどの場合
If セル.Value = "" Then
で間に合ってしまいます。
 
ところで
COUNTIF巻子がダメな理由の回答がないのですが・・・
 
例えば、
東京にいる人が名古屋に行くのに
新潟経由で行くための列車を探しているんですか?
と同じようなことをやろうとしていませんか?

投稿日時: 19/07/01 05:50:12
投稿者: rinahana

WinArrowさんへ
私としては そんなに深い意味はありませんでした。
counta()で処理ができなかったので、その辺のところを解決したかったからです。
sumifやsumifsなど便利な関数は以前からよく利用させていますが、空白に見えるセルに何が入っているのか、
それが分かり、それを取り除く方法は?と考えました。
以上です。