• ベストアンサー

EXCELで質問!自信がある人おねがい!!!

生年月日をS55.12.21のように入力していくもののやり方なのですがSやドットをいちいち入れるのが面倒になったためセルの書式設定のユーザー定義で『\"S\"##\".\"##\".\"##』というものを作って、数字のみを入れればSやドットを入力しないでも表示できるようにしたのですが、これをオートフィルなどでソートにかけようとすると、うまくいきません。入力したセルにダブルクリックをおすとS55.12.21が551221と出てしまいます!どうにかしてダブルクリックを押したときもS55.12.21と表示させたいのですがやり方わかりますか?僕はその列をコピーして値で貼り付ければ大丈夫だと思っていたのですがだめでした!説明が下手かもしれませんがやり方を教えてください!待ってます!

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

  • ベストアンサー
  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.4

書式設定で見かけだけ日付にするより、日付データにしておいたほうが良いと思います。 西暦なら 801221 と入力して、「データ」-「区切り位置」で[次へ]を2回押して、「区切り位置ウィザード3/3」で 「列のデータ形式」の「日付」を選んで完了を押せば、日付データに変換できます。 昭和だけなら、 551221 のように入力しておいて、どこかのセルに 250000 と入力してコピーし、 551221などと入力したセルを選択して「形式を選択して貼り付け」の「加算」にチェックを入れてOKを押せば、 801221 になりますから、その上で上記のデータ区切りをすれば、日付データに変換できます。 すでに入力済みなら、書式を一旦「標準」に戻してから、250000を加算してデータ区切りをしてみてはいかがでしょう。 (質問文中のオートフィルは「オートフィルタ」ではないでしょうか?)

bluewing1999
質問者

お礼

天才ですね!ありがとうございました! 完璧にできました!

その他の回答 (3)

回答No.3

書式設定はあくまで数字の『みかけ』を変えるだけなので、このままでは無理です。入力している数字自体を置き換えないと希望通りのことはできません。 入力しているのが昭和のみであれば、以下の方法で置き換えは可能です。 A1がS55.01.01(入力データ550101)の場合、 B1に =A1+19250000 C1に =DATE(LEFT(B1,4),MID(B1,5,2),RIGHT(B1,2)) これでC1にはS55.01.01の日付シリアル値が表示されます。あとは C1のデータをA1に「形式を選択して貼り付け」→「値(V)」→「OK」、そのあとA1書式設定を日付で設定すればお望みのことは可能です。 ただこの場合、ほかの元号については考慮に入れていませんので、明治・大正・平成などの元号がある場合は、B1の数式を工夫する必要があります。 例えばIf関数を使用して足す数字を変える、その場合は月日によって元号が変わるので下4桁の数字も判別するようIf関数の中に更にIf関数を入れるなどしなければなりません。 ここまで複雑であれば、B1で行っている計算を分けるかマクロで関数を作るほうがいいかもしれません。

回答No.2

この手の表示形式は私もよく使うのですが・・ ・オートフィルとソート  試しにやってみましたが、オートフィルもソートも  うまくいきましたよ。  ただし、入力しているのが日付ではなく、単なる数値 ですから、  そのままドラッグしても、ただのコピーになってしまいます。  日付風にオートフィルをかける場合は、   551221   551222  まで入力し、この2つを範囲指定してから、オートフィルをかける必要があります。  (そもそも生年月日をオートフィルというのも不思議ですが。。) ・ダブルクリックすると表示が戻る  セルをダブルクリックするということは、セルの値を  編集するってことですよね?  そもそも入力手間を省くために、数値化しているので、  これは仕方のないことです。  どうしてもというなら#1さんの方法ですね。  

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

入力用のセルとデータ保持用のセルを別にするのが良いかもしれません。 例えば、C3に551221と6桁で入力されている時 =DATE(1925+LEFT(C3,2),MID(C3,3,2),RIGHT(C3,2))