質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VSTO

Visual Studio Tools for Office

Q&A

解決済

1回答

1575閲覧

C#,VSTO 空セルの判定

maru-omochi

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VSTO

Visual Studio Tools for Office

0グッド

0クリップ

投稿2020/03/17 06:17

編集2020/03/18 05:27

【やりたいこと】

・エクセルのセルの色を変えたい。
(値が0の時は緑、0より大きい場合は赤、0より小さい場合は青にしたい)

・エクセルの空白セルの判定を行いたい。
(理由:セルの値が0の時、とすると空白セルも拾ってしまうため)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【困っている点】

・上記【やりたいこと】でも少し触れていますが、空白セルに0が入っているらしく、
if(セルの値==0)と書くと空白セルのところも拾ってしまいます(緑になってしまう)

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

にて
IF(ISBLANK(対象セル),"blank",IF(対象セル=0,"zero","other")) 

という判定方法を使わなければいけないと見つけました。

しかしこれをどうC#側に組み込んでいいかわからず困っています。


ーーーーーーーーーーー

昨日この質問を上げた際、わかりにくく読みにくい文章になってしまいまして皆様にご迷惑をおかけいたしました。大変失礼いたしました。

また丁寧にその旨ご指摘いただいたことに感謝申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maru-omochi

2020/03/18 01:18

はい。日本語のページでも同じものを見つけました。 これをどうコードに組み込んでいいかさっぱりわからず困ってます。 初めにぱっと思ったのは、どこかのセルの値を一度ISBLANK関数をいれて、そこのセルに一回一回通して返ってきた値で判定するという方法なのですが、これだとISBLANK関数の中にあるセルの指定を変数で行えないことに気が付きまして途方に暮れております
Zuishin

2020/03/18 01:29

コードにインデントもなく、説明も二転三転して読む気がしないので何が問題なのかよくわかりません。 > いろいろネットで調べまして、Equals(""), Equals(string,"") , .Value == null , .Value == "" 等を試してみたのですがだめでした。 これらの代わりに使えばいいだけじゃないんですか? 本当にこれらを試しましたか? まだ回答がついていないので、今のうちに質問を整理して他の人に見せられる程度に形を整えたら回答がつきやすいのではないかと思います。
maru-omochi

2020/03/18 04:35

ISBLANK関数はエクセル側の関数で、上記のコードはC#のコードです。 ISBLANK関数を使う となると、C#側のコードでこのISBLANK関数を使うことができない(現状調べた限り)ので、エクセル側でこのISBLANK関数を処理させないといけないというところまではわかったのですが。。。 ともあれご指摘の通り見づらい質問文になってしまっているので修正します。申し訳ございませんでした。
Zuishin

2020/03/18 04:40 編集

私の提案した IsEmpty は C# で使えます。
Zuishin

2020/03/18 04:39

同じものではなかったということではありませんか?
Zuishin

2020/03/18 04:53

いや、見ていた資料が古かったようです。IsEmpty はもう無いようですね。
maru-omochi

2020/03/18 04:56

重ね重ね大変失礼いたしました。私の勘違いで同じものだと思ってしまいました。IsEmpty調べてみます。ありがとうございます。
maru-omochi

2020/03/18 05:28

そうだったのですね。 調べていただいてありがとうございます。早速読んでみます。
maru-omochi

2020/03/24 03:17

時間かかりましたが解決いたしました。本当に感謝です。
guest

回答1

0

自己解決

・セルを二つ用意
・一つ(A1とする)に=IF(ISBLANK(A2),"blank",IF(A2=0,"zero","other"))を代入
・ループ処理時に選択されているセルの値をもう一つのセル(A2とする)に代入。
・直後A1セルの判定を入れ、blankでない場合(=0)にのみ色を付ける。

これで解決いたしました。ありがとうございました。

投稿2020/03/24 03:24

maru-omochi

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問