プロが教える店舗&オフィスのセキュリティ対策術

西暦を和暦に変換したいのですが、
既存の回答を試してみても、巧く行きません。
西暦部分が、文字列として、
1981/2/15
と、半角入力されていたので、
日付に直してみたり、ユーザー設定で
ggge"年"m"月"d"日" や、 ggge
を試してみたのですが、全く変換されません。
どなたか他の方法を、ご存知の方が居られましたら、
教えていただけないでしょうか?

A 回答 (9件)

No5&8 Hageoyadiさんの回答からちょっと試しに下記のようにすれば変更できますね。


セルの書式を文字列から日付へ変更した後にセルを一度編集状態にして確定

多分文字列にした後にその内容が変更されなければ書式も変更されないのではないでしょうか?
    • good
    • 1

#5です。


>謎解きを初心者にも分かり易く
>お願いできませんでしょうか?

うーむ、アタシも初心者なので、憶測でしかありませんが、
1.今回の場合のC列にもあらかじめ「文字列」の書式を設定しておくと思い通りに表示されません。
2.さらにうまく表示されなかったC列の書式を後から変更しても、やっぱりうまく表示できません。
3.でも、書式を何も設定していないセルに同じことをすると、今度はきちんと表示されます。
 以上のことから、セル内への入力式の計算と、書式情報の計算はまったく別のところで行われているため、セルを引用するような計算式の場合は、書式についての情報を無視して引用するのではないかな、と思ってます。そのほうが速いし。

あ、#5を訂正させてください。
B列には「=A1+1-1」
C列にB列を「形式を選択して貼り付け」で「値のみ」貼り付けた後で、A,B列の削除
になりますね。
    • good
    • 0

 


> 大変恐縮なのですが、BVAの画面を開くところから教えていただけますか?
「VBA」ではなく、VBAですが・・・。
メニューから[ツール] - [マクロ] - [Visual Basic Editor]を選択します。


> これを機会に、頑張りたいと思いますので、どうぞ宜しくお願いします。
[ツール] - [マクロ] - [新しいマクロの記録]を使用して、ご自分の「実現
(自動化)したい動作」を記録し、それを後から手直しして改良するのが効率的
です。

> また、実際に使用する際、修正するのは、ここだけでいいのでしょうか?
それは一概には言えません。書籍やWEBサイト等に掲載されているコード例が
そのまま使えるケースは少ないと思います。

> Columns("A:A")
一つのセルではなく、A列全体を指定しています。


> どうして、1を足したり引いたりすると、和暦になるのか??とても不思議です。

文字列のままでは算術演算は不可能ですので、数値演算可能な型に変換されて
いるのではないでしょうか。
日付時刻型の内部表現は浮動小数点です。(整数部分が日付、小数部分が時刻)
 

この回答への補足

何度も回答いただき、ありがとうございます。
いただいたコードを、実際に動かしてみてみます。
今の段階では、何が書かれているのか、さっぱり分かりません。
書かれたものが、何を意味しているのか、それが分からないと
ちょっと直せないですよね。
勉強して、また分からない事が出来ましたら、ここで
質問させていただくと思いますので、見かけたら宜しくお願いします。

文字列のままでは、確かに演算は不可能ですよね・・・。
でも、演算できないはずのに何故「足したり引いたり」
すると「和暦」になるのでしょう???
という、疑問が深まってしまいました・・・。
「=」が、「演算不可能な型」を「演算可能な型」に変えているのでしょうか?
不思議だなぁ・・・。

補足日時:2003/03/23 16:38
    • good
    • 0

文字列の前に ' この記号が入っているとかないですよね?


'"等は文字列の揃え記号ですからそれがあれば数字でも文字列として扱うはずです。
書式で変更しても無理かと

この回答への補足

回答ありがとうございます。
文字列として扱う、'"等は付いていません。
そういえば、昔ロータス123では、文字列として認識させるのに
そういった符号を付けていましたね。
懐かしいなぁ・・・。

補足日時:2003/03/23 15:37
    • good
    • 0

すると、セルの書式を「文字列」にした上で1981/2/15と入力されているわけですね?


という想像が間違ってなければ
その日付列をA列として
隣に2列挿入します。
B列に「=A1+1」記述します。C列には「=B1-1」
でC列の書式を「平成**年**月」にした後、A,B列を削除。


ダメですか?

この回答への補足

回答ありがとうございます。
あの、#4の方の回答とは、また違った意味で驚いています。
どうして、1を足したり引いたりすると、和暦になるのか??とても不思議です。
文字列のコピーをいじくっていたのですが、
標準に直そうが、数値に直そうが、全く修正が効かなかったのです。
あの、本当に申し訳ないんですが、謎解きを初心者にも分かり易く
お願いできませんでしょうか?

補足日時:2003/03/23 11:38
    • good
    • 0

おそらく、数値ではなく文字列として関知している物と思います。


この文字列「1981/2/15」を数値として関知させるために、関数等を使用し数値に直し、それからセルの書式にて日付に直せばいいと思います。
=VALUE(セル番号)でOKのはずです。
    • good
    • 0
この回答へのお礼

すごい、びっくりです。ありがとうございます。
上手い関数が無いものかと思っていたのですが、
これか!!という気持ちです。
ありがとうございます。これで作業が進みます!
これからも、溺れている私を見かけたら、どうぞ宜しくお願いいたします。
取り急ぎお礼まで。

お礼日時:2003/03/23 11:37

 


> 西暦部分が、文字列として、
> 1981/2/15
> と、半角入力されていたので、
> 日付に直してみたり、ユーザー設定で
> ggge"年"m"月"d"日" や、 ggge
> を試してみたのですが、全く変換されません。

変換した値を入れ直すしかないのではないでしょうか?
一例ですが、下記↓は、1列目(A列)を日付型に変換し、和暦の書式を設定するコードです。

Public Sub ConvDate()
Dim i As Long

Columns("A:A").NumberFormatLocal = "ggge""年""m""月""d""日"""
With Application.ActiveSheet
For i = 1 To .UsedRange.Rows.Count
If Len(.Cells(i, 1).Value) <> 0 Then
.Cells(i, 1).Value = CDate(.Cells(i, 1).Value)
End If
Next i
End With
End Sub

必要に応じて適宜変更してご使用ください。
 

この回答への補足

回答ありがとうございます。
大変恐縮なのですが、BVAの画面を開くところから教えていただけますか?
VBAの扉と申しますか、まだ敷地内にも行っていないもので・・・。
勉強したいと、かねがね思っておりましたので、
これを機会に、頑張りたいと思いますので、どうぞ宜しくお願いします。
また、実際に使用する際、修正するのは、ここだけでいいのでしょうか?
Columns("A:A")
A:Aが、西暦データが入力されているセルを指定すれば、
良いのかな、と思ったのですが。
お手数ですが宜しくお願いします。

補足日時:2003/03/23 11:19
    • good
    • 0

変更したいデータのセルを右クリックで「セルの書式設定」を選択する


表示形式の分類で日付を選択
同じく右側の種類に表示されている中からお好きな和暦表示を選択してください。

こんなもんでよろしいでしょうか?

この回答への補足

回答ありがとうございます。
#1の方の補足に書かせていただきましたが、
その方法では、解決が出来なかったのです。
他の方法は無いのでしょうか?
朝からずっと、調べては試しを繰り返していますが、
自分では調べ切れなかったので、恐縮ですが
ご存知でしたら教えてください。

補足日時:2003/03/23 10:32
    • good
    • 0

セルを右クリックして「セルの書式設定」→「表示形式タブ」の分類で「日付」を選んで右の「種類」で平成**年**月を選んで「OK」をク

もダメでしょうか?

この回答への補足

お返事ありがとうございます。
一番最初にやってみました。
変換されなかったので、ユーザー設定を変えてみたのですが、
これも駄目だったのです。
他の方法をご存知でしょうか?
件数が600件強あって、手入力で直したくないので、
一気に変換が出来れば、嬉しいのですが・・・。

補足日時:2003/03/23 10:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!