191115 EXCEL 空白セルと空セルとは異なる →「""」(ヌル)を未入力セルに変換 /例会参加者一覧表の編集
マニアックな話しで恐縮です。
関西ハイク山友会の年間168回、5110名もの参加者を例会別に集計したEXCEL表を作成完了しました。
昨年度のEXCEL表も作成完了していますので、2年分を比較すると関西ハイク山友会の好調な状況が把握できます。
一覧表が出来たので、EXCELのSUBTOTAL関数を使って、リーダー別の参加者明細を表示しようとしました。
これがあると各リーダー別に個別の参加者がどの例会に参加されたか一目ですから、結構便利です。
それをEXCELのSUBTOTAL関数を使えば、簡単にできると考えてやってみましたが、キーになるリーダーの例会開催回数は問題なく表示できますが、個別の会員名は例会毎にちゃんと表示できるのに、最終行に入れたSUBTOTAL関数が正しく表示されず、全員リーダーと同じ回数が表示されています。
原因:
ネットで色々調べた結果、一覧表を作成する時に使ったVLOOKUP関数では参照後のセルに該当データが無い場合、ヌル(空白)を返すようには設定できますが、空白セルと未入力セル(空セル)とは見かけ上は全く同じでも、EXCELの内部処理では区別され、SUBTOTAL関数では集計対象と認識されるのだそうです。
対応手段:
VLOOKUP関数を使う時に「=IFERROR(VLOOKUP(B$11,'2019縦変換'!D$9:$HV$105,1,FALSE),"")」として、IFERROR関数でエラー時に「""」を指定しているのは、該当データが無い時には「""」(ヌル)を返すというおまじないで、これによって「#N/A」というエラーを回避しています。
しかし、この「""」はあくまでも「'」という空白データで何も入力されていない未入力セルとは異なる、ということです。
色々試してみても、EXCELの関数ではセルを未入力セルに変換する方法は見当たりませんから、これは関数以外の対策を打たないといけないという結論に至りました。
そこでGoogleの検索で「空白セルを空セルに変換する方法」と指定して探すと、ようやく対応方法が見つかりました。
https://oshiete.goo.ne.jp/qa/789159.html
空白セルを空セルに置き換える方法(エクセル)
「教えて! goo」回答者: nishi6 回答日時:2004/02/25 12:31
これはEXCEL VBAを使って、マクロを実行する方法です。
今回はこの方法を使わせていただきました。
VBでセルを一つずつ処理していくので226列×750行=約17万セルもあると1時間近くかかりました。
https://itjo.jp/excel/delete-0long-character/
[エクセル中級] 空白セルが見つからない!長さ0の文字列を削除
ITジョー」
こちらはEXCELのタブから データ →区切り位置 で区切り文字を無し(未入力)にして未入力セルに変換する方法です。
ただしこちらは1列単位でしか出来ないので、今回のように226列もあると相当時間がかかり実用的ではありません。
1列ずつなら問題なく未入力セルに変換できることを確認しました。
なお、対象のセルが未入力セルか、「""」(ヌル)空白セルなのかを判定する方法は目で見ても判りません。
対象セルU71として、隣のセルなどに「=ISBLANK(U71)」と関数を入れると「""」空白セルなら「FALSE」、未入力セルなら「TRUE」が返ってきます。
結果:
下の通り、正しくカウントしてくれるようになりました。
なお、SUBTOTAL関数は金額の小計などに使うことが多いので、「=SUBTOTAL(9,g7:g237)」などで数字を集計する場合は、セルが「""」であっても全く支障はありません。
Posted on 11月 15, 2019 at 07:37 午後 | Permalink
コメント