0

ここで質問するのが適切かどうかはわかりませんが、他の人がここで Excel に関する質問をしているのを見ました。

Excel で 2 つの日付範囲の間にすべての月と年を配置するにはどうすればよいですか。

たとえば、私の日付範囲は 2004 年 3 月から 2008 年 12 月なので、Excel は返されるはずです。

March 2004
April 2004
May 2004
...
November 2008
December 2008

列の各セルには、2 つの日付間のすべての月/年が含まれている必要があります。

ありがとう

4

2 に答える 2

3

Windows Excel 2010では、セルに「March 2004」と入力し、必要なだけ下にドラッグすると、月単位で増加します。私の場合、フォーマットを「2004年3月」のように変更しましたが、セルを「mmmm yyyy」のカスタムフォーマットでフォーマットして、上記の正確なフォーマットを取得できます。カスタムフォーマットを行うには、日付のあるセルを右クリックするだけです...ちょっと待って、右クリックできますか?したがって、[セルの書式設定]ダイアログを表示し、[数値]タブを選択してから、リストの下部にある[カスタム]を選択し、上部にある[タイプ]ボックスに書式を入力します。

それとも、これよりも自動化されたものが必要でしたか?

于 2012-02-26T23:44:07.200 に答える
1

Doug のソリューションは、間違いなく、月の列を取得する最も簡単な方法です。ただし、VBA ソリューションが必要な場合は、以下のソリューションがあります。なぜそのようなルーチンを自分でコーディングできないのか、あなたは言いません。知らないことを尋ねるよりも、ルーチンをコーディングする方が簡単だと判断しました。このコードが何をしているのかわからない場合は尋ねてください。

Option Explicit
Sub TestDataRange()

  Call OutputDateRange("Sheet1", 2, 2, DateValue("1 Mar 2004"), _
                                       DateValue("1 Apr 2008"))

End Sub
Sub OutputDateRange(ByVal WShtName As String, ByVal RowTop As Long, _
                    ByVal Col As Long, ByVal DateFirst As Date, _
                    ByVal DateLast As Date)

  Dim DateCrnt As Date

  DateCrnt = DateFirst

  With Sheets(WShtName)
    Do While True
      With .Cells(RowTop, Col)
        .Value = DateCrnt
        .NumberFormat = "mmmm yyyy"
      End With
      DateCrnt = DateAdd("m", 1, DateCrnt)
      If DateCrnt > DateLast Then
        Exit Do
      End If
      RowTop = RowTop + 1
    Loop
  End With

End Sub
于 2012-02-26T23:58:39.663 に答える