menu

Web制作のTipsとかアレコレ。

Open Office CalcのIF関数がネスト出来て幸せ

2013.10.13

日頃オフィスソフト使うことが多くはないもので、オフィスはOpenOfficeを使ってます。

で、久しぶりにエクセルモドキ、あ、Calcですね、それを使う必要があり、関数のことでちょっと嬉しかったので記録をば。

まず、やりたかったことは、商品テーブルのようなものを作ること。例えばこんな感じ。

WS000003

こんな感じで、まあ多くても数百行ぐらいだと思うんだけど、手書きで書かれたものを入力して最後にCSVで吐き出すわけです。

というわけで、Calc(まあエクセルだわな)で効率的に入れましょーっとやり始めたんですが、

商品名のルールとしては、いくつかの意味ある文字列が”-”(ハイフン)で繋がってるということで、単に”&”を使った文字列結合と最後の「形式を指定して貼り付け」

WS000004
でやりはじめたんですが、ああ、ハイフンで区切られた要素の数が案外バラバラ。だので、縦にズサーとコピーする作戦が使いにくく、逆に面倒。

で、Calcの関数って条件分岐使えるんかなぁと調べてみたら、普通にIF文が使えるってことで、A~Dのセルについて、入力したセルの右横セルに値がセットされてなかったら、それより前のセルをハイフンで連結すべしという関数で処理してみました。

で、この処理にはどうしても条件分岐が必要になるので、Google先生にどこかいい参考サイトないっすか~て聞いてみたら幾つか教えてくれたんですけど、なんせOpenOfficeのユーザーが多くないからか情報は少なく、突っ込んだ内容の情報はなきに等しい。

で、とりあえずやってみるかということでやってみました。

まず、普通の条件分岐を書くには、

IF(条件 ; 真の場合 ; 偽の場合)

と、いわゆる三項演算子みたいな感じで書きます。区切りはセミコロンです。
例えば「C1が空っぽだったら、A1-B2と出力してちょうだい。そうじゃなければ(C1に値があったら)A1-B1-C1と出力してね」と書くには、

 =IF(ISBLANK(C1) ; A1&"-"&B1 ; A1&"-"&B1&"-"&C1) 

こんな感じ。これを、今回はA列からE列まで同じパターンで条件分岐をネストしてやってみた。出来るかどうかしらんけど、やってみた。
条件が偽の場合にはさらにIF文をまわしてやれ、というわけです。

そしたら出来た。わーい。

まあそれだけの話ですが(爆)

ちなみに出来上がりはこんな感じ(E列まであります)。

=IF(ISBLANK(A1); "";
	IF(ISBLANK(B1); A1;
		IF(ISBLANK(C1); A1&"-"&B1;
			IF(ISBLANK(D1); A1&"-"&B1&"-"&C1;
				IF(ISBLANK(E1); A1&"-"&B1&"-"&C1&"-"&D1;
					A1&"-"&B1&"-"&C1&"-"&D1&"-"&E1
					)
				)
			)
		)
	)

自分で分かるようにタブや改行を使って書いてますが、実はセル内にこのままでコピペできます。それも今日気付いた。
ちなみに一行にまとめるとこんな感じ。

=IF(ISBLANK(A2);"";IF(ISBLANK(B2);A2;IF(ISBLANK(C2);A2&"-"&B2;IF(ISBLANK(D2);A2&"-"&B2&"-"&C2;IF(ISBLANK(E2);A2&"-"&B2&"-"&C2&"-"&D2;A2&"-"&B2&"-"&C2&"-"&D2&"-"&E2)))))

ひえ~

まあ、出来て良かった。

WS000005

Comments

please leave your comment...

▲ Page Top