多趣味まるの日常

跡取り息子を辞めたスーパー多趣味人間の日常や便利アイテムの紹介

【C# VSTO】【空白セル 判定】【空白=0?】夢の中でコード書いて解決した話

こんばんは。まるです。

 

 

今日はとても不思議なことが起きたのでその話をしようと思います。

 

 

 

今週に入ってからは先週までのエクセルをやめ、スマホアプリ開発の勉強に移行しました。

 

 

会社でも新しい新入社員がばんばん入ってきており、何故かその社員たちの課題を教えるようになっています。

 

 

そんなこんなしていたのでエクセルのことなどすっかり忘れていたのですが、今日朝起きてびっくりすることがありました。

 

 

タイトルの通りなのですが、夢の中で前に解決できてなかった空白セルの判定をなんと解決してしまったのです!

(気になる方は前の記事をご覧ください:追記そもそも書いてなかった!!!orzすみません)

※具体的な方法は下に書いておきます。

 

どういうエラーが起きていたか説明します。前にブログに書いたつもりでいましたorzほんと申し訳ないですorz

 

 

まずざっくり何をしたかったというと、セルの色を変えたかった。

 

 

で、そのセルの色を変える基準は、0なら緑、プラスの数字なら赤、マイナスの数字なら青、空白はスルー。

 

 

なんだ簡単じゃん。と思いません?私も最初そう思っていたんです。

 

 

でもやってみると空白セルが何故か緑になる。。。

 

 

なんでだ??と思って調べてみると空白セルって空白のくせに内部で0が入っているらしいんですよね。

 

 

それのせいで0判定となり緑になってしまったみたいなのです。

 

 

空白セルであることを判定するメソッドはC#側では用意されておらず、ISBLANK関数を用いること、とマイクロソフトのページに書いてありました。

URL:

https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/use-formula-evaluate-blank-cell

 

 

ただそのISBLANK関数自体にセルの場所を指定するところがあり、その部分を変数で指定して、かつその対象セルを選択する方法がわかりませんでした。

 

 

わかってしまうと実に単純なことで恥ずかしいのですが、夢を見る前の私は解決できませんでした。

 

 

 

夢を見た朝「あそっか」といいながら目覚めたのは人生で初めてのことで自分でもびっくりしてます。

 

 

そしてその刹那「なにが??」と思うほどw

 

 

teratail(プログラミングしている人がわからないことを質問して回答もらえるサイト)で質問しても解決できずに途方に暮れていただけに解決した時の興奮たるや凄いものでした。

 

 

興奮興奮冷めやらぬまま身支度を済ませて慌てて家を飛び出したのですが、こういう時に限って電車遅延orz

 

 

会社に着いたのが1時間15分遅れという大遅刻orz

 

 

でもまったくなにも怒られないスーパーホワイト企業で助かりました。

 

 

会社についてすぐその夢で見たコードを試しました。

 

 

結果見事に解決!声を上げて喜んでしまいました笑

 

 

社員や先輩社員にそのことを話すと、「頭がおかしい人だ」「なんか変な病気にかかっている」とかいろいろ言われましたが、私自身そう思います。変です私orz

 

 

ともあれそんな不思議なことがあった今日の出来事でした。

 

 

ちなみにどうやって解決したかというと、(以下手順)

 

 

・セルを二つ用意する。(A1とA2とします)

・A2にIF(ISBLANK(A1),"blank",IF(A1=0,"zero","other")) を代入する

(詳しくはhttps://docs.microsoft.com/ja-jp/office/troubleshoot/excel/use-formula-evaluate-blank-cell参照)

・A1にループ処理で選択されるセルの値を代入する。

・A2をループで読み込ませ、blankでない場合(=0が見える形で入っている)にのみ色を付けるようにする。

 

以上手順にて解決することができました。

 

 

いろいろ検索してみたのですがこの方法を書いているサイトは見かけなかったのでおなじことで悩んでいる人が結構いるかもしれません。

 

 

もしかするとこのブログが一助になればいいななんて思うのですが、読者が増えて検索に引っかかってこないと難しいでしょうね。。。笑

 

 

今日は奇妙にも夢の中でしばらく悩んでいたことを解決してしまった話でした。

 

 

すみませんまとまってなくて読みにくい文章になってしまって。

 

 

それではまたです!

f:id:maruUsual:20200324221007j:plain