[[20170706115529]] 『yyyy/m/dと0531の日付がある時yyyy/m/dと統一させ』(蜜) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『yyyy/m/dと0531の日付がある時yyyy/m/dと統一させる』(蜜)

いつもお世話になっております。
yyyy/m/dと0531の日付がある時yyyy/m/dと統一させるには
どうすればいいでしょうか?
=IF(LEFT(!A6785,2)=42,!A6785,"")

A6785=2017/6/30

恐れ入りますが
ご指導をお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


yyyy/m/dと0531の日付がある時

A6785=2017/6/30

意味が解らないので、2度手間になりますね。
もう少しというか、誰だ見ても理解できるように質問したほうがいいと思います。
ひょっとして、データ区切り位置ですんじゃう??

コメント欄から

xxxxxxxxxxx って書くと、> が消えちゃうんじゃん。
やっぱつかえねぇ。
あ、編集でも同じみたいでした。
すみません。使い方すっかり忘れてました。
[[20170706130813]] のねむねむさんの回答見て思い出しました。
 >左に半角スペースを入れるのを忘れてた。
 BJ 7/6 13:42 13:59


 A6785がセルアドレスとして、!は何?
(コナミ) 2017/07/06(木) 15:40

(BJ)様(コナミ)様コメント頂きありがとうございます。
0531を区切り位置で区切りたくても何を元に区切ればいいでしょうか?

(コナミ)様
いつも説明不足で本当に申し訳ありません。
A1=0531
A2=2017/06/17

A1をA2と同じyyyy/mm/ddを表示させたいです。
おそらくA1は、TEXTを関数をかますのかな?と色々試してみたけど答えがでてこず。。

=IF(LEFT(!A6785,2)=42,!A6785,"") は、無理でした(泣)

よろしくお願い致します。
(蜜) 2017/07/08(土) 12:15


 横から失礼します。

 >0531を区切り位置で区切りたくても何を元に区切ればいいでしょうか?

 区切り文字は不要です。

 ウィザードの2/3では何もせずに「次へ」で飛ばし、
 ウィザードの3/3で列のデータ形式を「日付」にし、「完了」をクリック
(カリーニン) 2017/07/08(土) 12:38

 セルの書式設定 ユーザー設定

 0!/00!/00 でいいのでは
(たんたん) 2017/07/08(土) 12:44


 微妙ですね。

 0531 ← 文字列だよね?
 を日付に変換したいのか、データはそのままで単に yyyy/mm/dd 形式で表示 させたいのか・・・。
 (別のセルなのかデータの入ったセルなのかわからんけど。)

 データとして活用するなら、私は日付に変換するけどね。

(BJ) 2017/07/08(土) 13:05


(カリーニン)様(たんたん)様(BJ)様
コメントを頂きありがとうございます。
カリーニン様のおっしゃった通りにすればできました!(鳥肌立ちました)
感謝致します。

たんたん様
 0!/00!/00をユーザー定義でしましたが0531のままでした。
ユーザー定義ではないでしょうか?

BJ様
0531は、文字列です。
データをそのままでyyyy/mm/ddとしたかったです。
データとして活用します。日付関数のがいいですか?

こんなに何通りもあるのですね(涙)

(蜜) 2017/07/08(土) 13:53


 では、解決ということで良いんですよね?

 追加 14:24

 >データをそのままでyyyy/mm/ddとしたかったです。

 う〜ん。
 区切り位置だと、変換場所を指定しないと上書きするけど?
 (0531という情報は残らない。)

(BJ) 2017/07/08(土) 14:15


 衝突しましたがそのままアップします。

 「0531」はセルの書式設定が文字列ということですか?
 「'0531」と入力されてるということですか?

 いずれにせよ、文字列をセルの書式設定で日付に見せかけても
 日付データになるわけではありません。

 元のデータを日付データに変換するか、別セルで関数で日付データ
 に変換するしかありません。
(カリーニン) 2017/07/08(土) 14:20

(BJ)様(カリーニン)様コメント頂きありがとうございます。

仰るとおり
「'0531」、文字列の「0531」
文字列なので別セルに関数で日付データに変換しないといけないですね。

区切り位置をする場合は、変換場所を指定してから、ユーザ定義でyyyy/mm/ddとすれば出来ました。

なので「'0531」、文字列の「0531」を
別セルに =TEXT(A1,"0-00")*1設定してからユーザ定義でyyyy/mm/ddとすると出来ました。

どっちが早いのかっていうとやはり関数の方なのですね。
(蜜) 2017/07/08(土) 15:03


 >こんなに何通りもあるのですね(涙) 

 まともに解決できる案は何通りもありません。

 A2の「yyyy」と合わせると言う仕様(?)はどこに行っちゃったのでしょうかねぇ?
 ※質問文自体が間違っているかも知れないので、そんなことを心配する必要はないかも知れないですが。。

 にしても、来年の初めのころになった時、
 このシートの結果は、大丈夫なんですかねぇ・・・

(半平太) 2017/07/08(土) 15:12


 >にしても、来年の初めのころになった時、
 >このシートの結果は、大丈夫なんですかねぇ・・・

 後先考えないで、数式や手間、プログラムの短さだけに走る人が多いんで
 知ったこっちゃねぇで、良いんじゃないですか。
 言っても聞かないし。
 くどく説明するのも面倒だし。
(BJ) 2017/07/08(土) 15:41

 BJさん

 アドバイス、有難うございます。

 実のところ、私も少なからずそのモードで回答しております。

(半平太) 2017/07/08(土) 16:14


(半平太)様(BJ)様コメント頂きありがとうございます。
私は一年半かけてやっとエクセルに覚醒がついたので
洋平太様の仰る言葉を実感できるのがもう少し掛かるかもしれません。
ですがこれからの私に+になる言葉です。
ありがとうございます。

BJ 様 言っても聞くのにとても時間が掛かるので確かに面倒ですよね。
ありがとうございます。
(櫁) 2017/07/08(土) 17:48


 >A1=0531 
 >A2=2017/06/17
 >A1をA2と同じyyyy/mm/ddを表示させたいです。

 A1は何年の5月31日になればいいんですかね?

 A2の年に合わせるんだったら

 =TEXT(A1,YEAR(A2)&"-00-00")*1
 とか
 =DATE(YEAR(A2),LEFT(A1,2),RIGHT(A1,2))   ←の式はA1が文字列だということが条件

 >=TEXT(A1,"0-00")*1

 ↑ の式だと今は「2017/05/31」になります。
 ただし、年が替わって2018年になり、何かのタイミングでその式が再計算したら、
「2018/05/31」になってしまいますけど、それでもいいんですか?

 ちょっと気になったので。
(笑) 2017/07/08(土) 18:18

(笑)様コメント頂きありがとうございます。

現在のファイルであれば2017年でいいのですが
来年このファイルを開いたときに2018年に変わったら困ります。
今回のデータは、文字列と日付が同じ列にあるので

 >A1=0531 
 >A2=2017/06/17
 >A1をA2と同じyyyy/mm/ddを表示させたいです。
>=TEXT(A1,YEAR(A2)&"-00-00")*1を元に

=IF(OR(LEFT(A1,1)="0",LEFT(A1,1)="1"),TEXT(A1,YEAR(A2)&"-00-00")*1,A1)
にすると理想になりました。(嬉)
ありがとうございます。

ちなみに、自分で乗せた=TEXT(A1,"0-00")*1も調べて出来た物で、意味「-」について今更しらべていたら、2006年の投稿より
/は割り算の演算子でもありますので
!を前につけてただの記号だと宣言する必要があります。
=TEXT(A1,"0000!/00!/00")
または
=TEXT(A1,"0000""/""00""/""00")
とすれば 2006/01/21 となり数値化すればシリアス値に変換されます。

これを試してみると#VALUE!と表示されました。
これは、エクセル2013ではないからでしょうか?
=TEXT(A1,"0-00")*1 の中の「-」についての意味がまだわからないです。

横道それていたら申し訳ありません。。

(蜜) 2017/07/08(土) 19:17


 >これを試してみると#VALUE!と表示されました。 

 =TEXT(A1,"0000!/00!/00")*1

 この式が機能するのは、A1が「20170708」のように年・月・日がそろった8桁の数値(文字列でも)の場合。
 A1に「20170708」のような8桁の値を入力すればエラーにはなりません。

 A1が「0531」だったら =TEXT(A1,"0000!/00!/00") は「0000/05/31」になります。
「0000/05/31」なんて日付は存在しないので「*1」して数値化(日付データに変換)しようとしてもエラーになるということ。

 >=TEXT(A1,"0-00")*1 の中の「-」についての意味がまだわからないです。 

 Excelに日付を入力する場合、普通は「2020/7/7」のようにスラッシュ「/」を入力すると思いますが、
「2020-7-7」とハイフン「-」で区切ってもExcelはこれを日付と認識します。
 それが存在する日付であれば、ですが。

 参考まで。
(笑) 2017/07/08(土) 21:12

 ついでに ↓ の式についてですが、
 =TEXT(A1,"0-00")*1

 A1が「201707」のような年4桁+月2桁の場合、
「2017/7/1」という月初の日付に変換されます。

 この場合は、来年になっても2018年の日付になったりはしません。

 参考まで。
(笑) 2017/07/08(土) 21:51

(笑)様コメント頂きありがとうございます。
深いですね(涙)
いつも勉強になります。
とても細かくご説明頂き感謝致します。

(蜜) 2017/07/08(土) 22:03


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.