• ベストアンサー

エクセル ユーザー定義で""で文字を囲むのはなぜ?

エクセル2002で、セルの書式設定→ユーザー定義で文字を入力する際に、"赤"などと""で囲むのはなぜなのでしょうか?これで囲まなくてもちゃんと表示されますよね?例えばyyyy年m月d日と入力すれば、ちゃんと2007年8月3日と表示されますが、解説書などを読むとyyyy"年"m"月"d"日"などと書いてあります。なぜなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

ユーザー定義で指定するフォーマットは文字を使って指定します。 定義文字とは違う場合はそのまま表示されますが、定義文字の場合は任意の表示になります。 フォーマット指定の文字と任意の文字を区別するために文字を””でくくります。 "(y/m/d)"yyyy/m/d では、””の括りを文字列として認識されますが、(y/m/d)yyyy/m/d とすると (yy/m/d)yyyy/m/d に自動修正されて、意図した表示と違ってしまいます。

ibichin
質問者

お礼

ありがとうございました。

その他の回答 (2)

回答No.3

> yyyy年m月d日と入力すれば、ちゃんと2007年8月3日と表示 されません。いつもの余計なおせっかい機能が自分の知らない文字を yyyy"年"m"月"d"日"と引用符で囲っています。もう一度書式設定を 開いてみれば判ります。 CSVで明らかに文字列なものを引用符で囲む習慣はなかった。なんでも 囲むのは、管理工学研究所あたりが判断を面倒くさがって始めた風習。 だから別名K3形式。普通のCSVで引用符をつけるのは数字と数値の区別 を必要とする場合や文字列にカンマそのものを含む場合のみ。 「ここは意味を解釈せずに無条件で表示する文字列だよ」という意味で 引用符で囲むのはアリだけど、煩雑で面倒くさい。だから言語によっては 「これは機能文字に見えるけど今回に限り無視してね」というときだけ エスケープさせるって手口を使う。こっちの文化の人がExcelを設計して いたら、いちいち引用符を書かずに済んだかも。

ibichin
質問者

お礼

もう一度書式設定を開いてみたら""が付いてました。 私の早とちりだったようです。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

基本的にVBなど諸言語(注)も含め、文字列は””(たまに’’)で囲む伝統があリます。(注)FORTRAN,COBOL言語の昔から文字リテラルは””で囲む。 http://www16.plala.or.jp/hiyokogumi/3/310.html#a1 参考 その伝統を引いたかどうかはっきりしないが、だから””で囲むほうが、本則(標準)なんだが、エクセル等側で、なくても文字列と解釈してくれるものは、なくても済んでいるだけと考えればよい と思う。 CSVファイルのデータなども、123,"東京","234"などが、原初的形だったと思うが、今では 123,東京,"234"が当たり前になっているように思う。 ただ日付書式の例だと、dなど特別の意味のある文字を、文字列dの意味で使うときは、””は省略できません。

ibichin
質問者

お礼

ありがとうございました。

関連するQ&A

  • エクセル、書式設定でのユーザー定義について

    質問させて頂きます エクセルでの質問ですが、セルの書式設定のユーザー定義に「 [$-411]ggge"年"m"月"d"日";@ 」という設定がありました。 先頭の [$-411] の意味を教えて頂けないでしょうか? はずしてもセルの表示結果は同じになりました。 宜しくお願い致します

  • エクセル2010 ユーザー定義の書式で表示したい

     新年、明けましておめでとうございます。    年明け早々にお世話になります。  "'"yy"年"mm"月"dd"日" の書式の西暦の日付に続けて、スペースなしでシート名を表示したいので、  お分かりになる方、ご教示よろしくお願いします。  例えば、日付が2014年1月2日(編集当日の日付ではありません)でシート名がABCDなら、  2014/01/02 のみの入力値に対して   '14年1月2日ABCD  をD6セルに表示させたいです。  現時点で、  =RIGHT(CELL("filename",A2),LEN(CELL("filename",A2))-FIND("]",CELL("filename",A2)))  を特定の書式を設定していないD8セルに入力して、D8セルにシート名の表示はできていますが、  日付を表示させようとして、ユーザー定義の書式でロックされていないD6セルに  'yy"年"mm"月"dd"日" を設定し、2014/01/02 を入力したところ、# が表示されて、  頓挫しています。  本来なら、D6セルに日付とシート名を表示させたいのですが、  D6セル、D8セルのいずれも  ユーザー定義の書式だと期待した表示結果が得られない状態です。  何故、日付表示さえうまく行かないのか、この点も解説頂けたら有難いです。  年明け早々にお手数で恐縮ですが、よろしくお願いします。

  • エクセル 日付、数字の入力方法

    エクセル2002を使用 ○日付の入力方法 2009/09/04と入力したい。0が消える。 セルの書式設定、ユーザー定義でYYYY”年”m”月”d”日”でも0が消える。’で文字化はしたくない。 ○数字の入力 数字の前に0がある 例:000012340 これも当然数字の前の0が消える。’で文字化はしたくない。 どのようにセルの書式設定をすればよろしいでしょうか?

  • ユーザー定義について・・・

    カテゴリーが合っているか分かりませんが、調べても分からないので、是非お力を貸して下さい。エクセルです。 例えばA1セルに未来の日付が入力されています。その入力されている日付の10日前になったら、その日付を自動で赤色表示させる事は可能でしょうか。曜日の場合は土曜なら[青]、日曜なら[赤]と表示させるのは、可能ですよね。 セルの書式設定のユーザー定義?で設定するのでしょうか。その場合の書式を教えて頂きたいです。 勉強不足ですが、よろしくお願いします。

  • ユーザー定義の年月日のデフォルトを直したい

    ユーザー定義のデフォルト設定 「yyyy"年"m"月"d"日"」 を使うとき、月日を入力すると自動で今の西暦になります。 この年を任意で設定し、月日を設定すると自動でその西暦が表示されるような方法がありましたら教えてください。 たとえば「1-1」と入力すると「2022年1月1日」になりますが、 これを「1-1」と入力すると「2022年1月1日」にしたいということです。 Excel2019利用です。

  • エクセルの日付入力について

    エクセルの日付入力について質問します。 例えばAセル Bセルの書式設定にユーザ定義の yyyy"年"m"月"d"日"を設定します。 (1)Aセルに12/25と入力すると→2007年12月25日 (2)Bセルに1/8と入力すると→2007年1月8日 となります。 これを(2)Bセル1/8を入力すると2008年1月8日とする為には どうしたらよろしいでしょうか? 関数を使用かもしくは簡単な方法があればご教授願います。

  • エクセルの日付入力について

    エクセルの日付入力について質問します。 例えばAセル Bセルの書式設定にユーザ定義の yyyy"年"m"月"d"日"を設定します。 (1)Aセルに12/25と入力すると→2007年12月25日 (2)Bセルに1/8と入力すると→2007年1月8日 となります。 これを(2)Bセル1/8を入力すると2008年1月8日とする為には どうしたらよろしいでしょうか? 関数を使用かもしくは簡単な方法があればご教授願います。

  • このようなユーザー定義の文字列の設定

    たとえば「20210411」と入力(またはコピペ)すると、「2021年04月11日」と表示してくれるような、書式におけるユーザー定義の文字列について教えてください。 もうひとつなのですが、同様に、 たとえば「-100」という文字列を入力(またはコピペ)すると、マイナスの部分がとれて「100」表示してくれるような、書式におけるユーザー定義の文字列について教えてください。 Excel2019利用です。

  • ユーザー定義で「年」「年」「日」の間に~を表記

    「セルの書式設定」のユーザー定義で、たとえば 「2020年01年01日」 と自動で表示させたい場合は 「yyyy"年"mm"月"dd"日"」 と設定し、「20-1-1」と入力すればよいのですが、このような入力方法で 「2020年01年01日~2020年01年15日」 という形をユーザー定義で作ることはできるのでしょうか? もし可能でしたら文字列を教えてください。

  • エクセルの書式設定→ユーザー定義

    エクセル2003です。A1のセルに300と入力しA2のセルに17.5と入力したら@17.5と表示したいのです。A3に掛け算の合計5250となるよに。A2に書式設定→ユーザー定義で##”@”###とし17.5と入力したら@18になってしまいます。いろいろ試したのですがうまくいきません。ユーザー定義を教えて下さい。よろしくお願いします。

専門家に質問してみよう