• ベストアンサー

カレンダー日付へ列名の置換

列名の一部を添付ファイルのようにシステムカレンダー日付へ置換したのですが、方法を 教えていただけませんでしょうか? ・月曜日~日曜日の週単位 ・四半期対応(10月-12月のケースも有り..) 宜しくお願い致します。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (371/1817)
回答No.2

B1: =TEXT(DATE(2020,4,MID(A1,2,3)),"yyyy/m/d")&"-"&TEXT(DATE(2020,4,MID(A1,7,3)),"yyyy/m/d")

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

#3です。#3の回答では、「商品A」などの部分を出すのを漏らしているので、 Sub test02() Dim y As Variant cr = Range("XFD1").End(xlToLeft).Column 'MsgBox cr For j = 2 To cr x = Cells(1, j) x1 = Split(x, vbLf) 'MsgBox x1(0) 'MsgBox x1(1) x2 = Replace(x1(0), "A", "") y = Split(x2, "-") f = (DateSerial(2020, 3, 31) + y(0)) & "-" & (DateSerial(2020, 3, 31) + y(1)) Cells(3, j) = f & vbLf & x1(1) Next j End Sub の方がよい。 ーー ただし、1セルの中に、2つ以上の項目データを詰め込むのは、望ましくない使い方です。 データベース的な処理の時には、困る事態に直面するだろう。 エクセルを、見てくれだけの、ワープロ的使い方をしていることになり、初心者的だ。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

画像だけ挙げて、色々な場合の説明がなく、質問としては、手抜きだな。他人には、説明なくしては判らないよ。 日付シリアル値という、エクセルの日付のしくみを知っていれば(多分知らないのだろうな)、足し算でしかない(ように見える)。 ーー >・月曜日~日曜日の週単位 ・四半期対応(10月-12月のケースも有り..) の意味も説明なしだが、どういうこと?。 ーー A001などで、A以外はあるのか? ーー 質問者は、VBAはやったことないだろうが 標準モジュールに Sub test01() Dim y As Variant cr = Range("XFD1").End(xlToLeft).Column MsgBox cr For j = 2 To cr x = Cells(1, j) x2 = Replace(x, "A", "") ’”A"は省く y = Split(x2, "-") ’”-”で分割 f = (DateSerial(2020, 3, 31) + y(0)) & "-" & (DateSerial(2020, 3, 31) + y(1)) ’数字部分で日付を計算(加算) Cells(3, j) = f Next j End Sub 程度の行数のコードで、簡単にできる。 結果 元データ部分 (B1より右列) A001-A005 A001-A005 A006-A0012 A006-A0012 結果部分 (B3より右列) 2020/04/01-2020/04/05 2020/04/01-2020/04/05 2020/04/06-2020/04/12 2020/04/06-2020/04/12 ただし、これでは、ダメというケースが出そうだが。質問の説明不足が原因だよ。

genesis50
質問者

補足

test02()、12行目、変数fで、"実行時エラー '13'型が一致しません。"エラーが表示されます。 "Dim f As Date"を追加しても同じエラーになります。 対応方法を教えていただけませんでしょうか やりたいこと; ・任意の年の年間カレンダー対応 ・月曜日~日曜日の週単位で、yyyy/mm/dd形式に置換 ・文字列は商品A、商品A-1だけです

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

B1に A001-A005 商品A が入っているとして B2に変換後を表示するとした場合 =TEXT(DATE(2020,4,0)+MID(B1,2,3),"yyyy/m/d") & "-" & TEXT(DATE(2020,4,0)+MID(B1,7,3),"yyyy/m/d") & RIGHT(B1,LEN(B1)-9) として右にコピーして試してみてください。 折り返して全体を表示にしないと改行されません。 A006-A0012はA006-A012と考えています。

すると、全ての回答が全文表示されます。

関連するQ&A