No.1ベストアンサー
- 回答日時:
平成13年は「庚辰」ではなく「辛巳」では?
前の部分(庚や丁)は十干と言い10年周期、後半(辰や巳)は馴染み深い十二支で12年周期です。
手抜き版ですが作って見ました(=えと(A1) の様に使います)。
Function えと(target As Range) As String
Dim jikkan, jyuunisi, targetY
targetY = Year(target)
jikkan = Array("庚", "辛", "壬", "葵", "甲", "乙", "丙", "丁", "戊", "己")
jyuunisi = Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥")
えと = jikkan(targetY Mod 10) & jyuunisi((targetY - 4) Mod 12)
End Function
No.7
- 回答日時:
こんばんは!
以前、関数で同じような質問に回答をした記憶があるのですが・・・
今回はVBAをご希望だというコトなので、一例です。
方法はいくつかあると思います。
(1)1900年からの干支をすべて表にしておいて、それを表示させる!
(2)すべての表を作成するのは大変ですので、1900年が「庚子(かのえね)」というコトを利用して12行程度の表だけを作成しておく。
(1)・(2)ともVLOOKUP関数で対応できます。
↓の画像のようにSheet2の干支の表を作成しておきます。
「五干(ごかん)」の方は「庚(かのえ)」から、「十二支(じゅうにし)」の方は「子(ね)」から始まる表です。
これを利用してSheet1のB列セルをダブルクリックするとA列年の「干支」が表示されるようにしてみました。
画像と同じ配置でSheet2に表を作成しておきます。
画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてB列セルをダブルクリックしてみてください。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long
Dim ws As Worksheet
Set ws = Worksheets("sheet2")
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
i = Target.Row
If Cells(i, 1) <> "" Then
Target = WorksheetFunction.VLookup((Year(Cells(i, 1)) - 1900) Mod 10, _
ws.Range("A2:B11"), 2, False) & _
WorksheetFunction.VLookup((Year(Cells(i, 1)) - 1900) Mod 12, _
ws.Range("A2:D13"), 4, False)
End If
Cancel = True
End Sub
※ わざわざVBAにしなくても関数で表示した方が簡単です。
この程度で参考になるでしょうか?m(_ _)m
ありがとうございます。
>わざわざVBAにしなくても関数で表示した方が簡単です…
まだ、上手くできません。
でも、、BVAに挑戦したいのです。 <m(__)m>
No.5
- 回答日時:
No.2、3です。
一つ言い忘れました。
No.1さんのコード、"癸"(みずのと)が"葵"(あおい)になっていますよ。
No.4
- 回答日時:
ANo.1です。
> 提示いただいた式を使って
> 使用法を試行錯誤しています。
試行錯誤って……もしかしてExcel触りたてでマクロを何処に書くかも判らないって話しでしょうか?
もし、そうでしたらリンク先を参考にVBEを起動して「標準モジュール」を挿入し、そこに先の回答で提示したコードをコピーしてください。
その後でExcelシートに戻り、A1セルに適当な日付を入れ、別なセルに =えと(A1) と、入れてみてください。
参考URL:http://officetanaka.net/excel/vba/beginner/10.htm
ありがとうございます。
ロータス3.1からExcelは2000からです。
上り坂・下り坂で苦労しました。
今回は一番難しい『 まさかのド初心者 』です。
マクロの知識は有りません。 (^_^;)
「NEC6001マークII搭載のNベーシックで表を作り、並び替えを行った知識がマクロに似ているかな」と言うくらいで、ド素人です。
自分の作業をマクロに記録して、それをボタンに記載して作業を早めるだけで、まれにバグを拾ったり、二つのマクロを連結したり、色や形を試行錯誤で、所期の目的に近づけることができるだけです。 <(_ _)>
No.3
- 回答日時:
> 今回は、VBAを学びたいのです。
No.2にも書きましたが、基本的な考え方は関数でもVBAでも同じです。
No.2の関数で処理した内容をVBAで書くと以下のようになります。
Function えと(Target As Range) As String
Dim 西暦年 As Integer
Const 十干 = "庚辛壬癸甲乙丙丁戊己"
Const 十二支 = "子丑寅卯辰巳午未申酉戌亥"
西暦年 = Year(IIf(Target.Value <= 60, Target.Value + 1, Target.Value))
えと = Mid(十干, (西暦年 Mod 10) + 1, 1) & Mid(十二支, ((西暦年 - 4) Mod 12) + 1, 1)
End Function
厳密には、関数の場合と一つだけ違いがあります。
ワークシートとVBAでは1900/3/1より前の日付に1日のズレがあります。
本来は閏年ではない1900年を閏年として扱うExcelの仕様によるものです。
シリアル値の60は、ワークシート上では1900/2/29として扱われるのに対し
VBAでは、これが正しく1900/2/28として扱われるため、ズレが起きます。
ですので、対象セルの値がシリアル値の60以下の場合に+1しています。
実際は、これで影響があるのは1900/1/1だけなんですけど…
No.2
- 回答日時:
単純に年の干支だけでいいなら
・十干が「庚辛壬癸甲乙丙丁戊己」が10年サイクル
・十二支が「子丑寅卯辰巳午未申酉戌亥」が12年サイクル
なので、VBAを使わなくても
=MID("庚辛壬癸甲乙丙丁戊己",MOD(YEAR(A1),10)+1,1)&MID("子丑寅卯辰巳午未申酉戌亥",MOD(YEAR(A1)-4,12)+1,1)
このような式で出せると思います。
VBAでやるにしても、考え方は同じです。
庚辛壬癸甲乙丙丁戊己の10文字から、西暦年を10で割った余りを元に1文字を抽出する。
同じく、子丑寅卯辰巳午未申酉戌亥の12文字から、西暦年を12で割った余りを元に1文字を抽出する。
この二つを繋げる。
※西暦1900年は「庚子」なので、微調整は必要です。
(上記の関数式では、十二支の方で-4をしているのがそれです)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelでA1に「年」B2に「干支」を表示する関数 6 2023/08/17 15:51
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) エクセルについて教えてください。 1 2022/12/26 09:01
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) エクセルでセルの日付を和暦表示設定にしたらおかしなことに? 3 2022/05/25 11:47
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでURL挿入後、名前を変...
-
エクセルで1分あたりの作業量...
-
エクセル関数使用で赤色数字を...
-
エクセルで入力のあるセルのみ...
-
エクセルで逆さまに印刷したい
-
一つのセルに計算式を入れて別...
-
エクセルでの順位に応じた点数...
-
EXCELで千円単位を百万円単位に
-
エクセルの合計数の出し方につ...
-
列幅が変更できなくなった
-
画像(GIF/JPEG Image)をエ...
-
エクセルで前月までの平均を出...
-
EXCELのデータ修正時に、...
-
エクセルの3D参照で困っています!
-
エクセルの数式を解除して数字...
-
エクセル:複数シートで重複デ...
-
エクセルでセルの日付を和暦表...
-
エクセルで家計簿を作成してい...
-
「マネージメント」と「マネジ...
-
小さな会社の事務全般の社員。...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでURL挿入後、名前を変...
-
エクセル関数使用で赤色数字を...
-
エクセルで入力のあるセルのみ...
-
一つのセルに計算式を入れて別...
-
EXCELで千円単位を百万円単位に
-
エクセルで1分あたりの作業量...
-
エクセルで逆さまに印刷したい
-
EXCELのデータ修正時に、...
-
列幅が変更できなくなった
-
エクセルでの順位に応じた点数...
-
表に日付と担当者を入力すると...
-
エクセルでセルの日付を和暦表...
-
Excel・プラス値とマイナス値を...
-
エクセルで部屋番号や個人情報...
-
画像(GIF/JPEG Image)をエ...
-
3つの条件のうち、2つを満た...
-
エクセルで前月までの平均を出...
-
エクセルで重複データから抽出...
-
異なる締め日に対応して支払日...
-
Mac版Excelの列移動?について
おすすめ情報