投稿

ラベル(データ結合)が付いた投稿を表示しています

Excelのセル内改行コードについての、ちょっとした疑問

イメージ
Windowsにおいて、 Microsoft Excelのセル内改行コードは、 LF(0x0A) Windows OS標準の改行コードは、 CR+LF(0x0D0A) なぜ、違うのか? それは、Excelは当初Mac用(Macの改行コードはLF)のアプリケーションとして開発された為。 との文言を散見する。 実のところどうなのだろう? Excelの発売年は1985年。Macintosh版として。OSはSystem 2.0。 Macの改行コードは、 OS9までは、 CR(0x0D) OSXは、 LF(0x0A) なのだが、 実は、Mac版Excelのセル内改行コードは、OSXでも CR(0x0D) なのである。 実際、CHAR関数でセル内改行を表記するコードは、ASCIIコードの10進法での表記で表すが、 Windowsでは、CHAR(10)←LFを表す Macでは、CHAR(13)←CRを表す である。 故に、 「Excelは当初Mac用(Macの改行コードはLF)のアプリケーションとして開発された為」 と言うのは 当たっていないのではないか 。 因みに、Macにおいて、セル内改行を含むセルをコピーして、InDesignにて作成した表にペーストすると、Macのセル内改行がCRであるので、この前後で2つに別れて2つのセルに入ってしまい、結果行がズレて事故のモトになる。 これ故に、セル内改行が大キライなのである。(Windows版InDesignについては、残念ながら存じ上げません。あしからず。)

【Excel関数】表の横項目を「/」を挟んで結合させようとしたら意外に大変だった、というおはなし

イメージ
ある表の、同年の項目1から項目5までの文字列を、「/」を挟んで結合させたい案件が発生した。 序でに内容のない項目(つまりは空セル)は省いて結合させたい。 具体的にはこんな感じ。 表1 コレ、以外にややこしい事になってしまった。 マクロは使わず(マクロが出来ない、が正解なのだが)、関数のみでどうにか出来ないか悪戦苦闘したからだが。 ややこしすぎて、どうやったか忘れそうなので、備忘録としてまとめてみた。 条件は、 文字列を「/」を挟んで結合させたい 空セルは省く どの項目が空セルになるかはランダム 以上の条件全てを満たす関数を組みたいのだが、懸念点は以下の通りである。 途中に空セルがある場合「/」が「//」や「///」と重なる   例)2017:「東京/大阪///奈良」 最後が空セルの場合、最後に「/」が来てしまう   例)2016:「東京//京都/神戸/」 先頭が空セルの場合、先頭に「/」来てしまう   例)2015:「/大阪//神戸/奈良」 もう何とも意図したものに出来ないのである。 ということで、地道に1づつ解説していく。 まず最初に、 文字列を「/」を挟んで結合させたい を実装する関数を考えてみる。 セルB7に結合した文字列を表示するものとする。 素直に文字列を結合すると、 B7=B2&"/"&C2&"/"&D2&"/"&E2&"/"&F2(B7=CONCATENATE(B2,"/",C2,"/",D2,"/",E2,"/",F2)に同じ) 結果:「東京/大阪///奈良」 この場合、上記懸念点で記した通り、空セルがある場合は「/」が余計に現れるのである。 今回作成する関数はひじょ〜に長いので、通常文字列を結合させる時に使用するCONCATENATE関数ではなく、「&」を使った文字列結合を採用する。 次に、空セルの場合は省き、そうでない場合は文字列を表示したい時、これは条件分岐のIF関数で、 B7=IF(B2="","...