過去ログ

                                Page     459
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼グラフができません・・・  muu 02/12/4(水) 17:35
   ┗Re:グラフができません・・・  こうちゃん 02/12/5(木) 9:14
      ┗Re:グラフができません・・・  muu 02/12/5(木) 9:34
         ┗Re:グラフができません・・・  muu 02/12/5(木) 10:24
            ┗今ひとつはっきりしませんが・・  こうちゃん 02/12/5(木) 11:57
               ┣Re:今ひとつはっきりしませんが・・  muu 02/12/5(木) 12:56
               ┗Re:今ひとつはっきりしませんが・・  muu 02/12/5(木) 14:52
                  ┗こんどは月集計(ピボットテーブル使います)  こうちゃん 02/12/5(木) 16:14
                     ┣Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/5(木) 16:44
                     ┗Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/5(木) 16:45
                        ┗Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/6(金) 11:37
                           ┗Re:こんどは月集計(ピボットテーブル使います)  こうちゃん 02/12/6(金) 13:18
                              ┣Re:こんどは月集計(ピボットテーブル使います)  Jaka 02/12/6(金) 14:00
                              ┃  ┣Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/6(金) 16:10
                              ┃  ┗Re:グラフはあらかじめ作っていないとダメですか?  muu 02/12/6(金) 16:36
                              ┃     ┗Jakaさんのコードの貼り付け場所  こうちゃん 02/12/6(金) 16:50
                              ┃        ┗Re:こうちゃんさん  muu 02/12/6(金) 16:55
                              ┣Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/6(金) 16:09
                              ┗Re:こんどは月集計(ピボットテーブル使います)  muu 02/12/6(金) 16:48
                                 ┗どっちのコード?  こうちゃん 02/12/6(金) 17:03
                                    ┗Re:  muu 02/12/6(金) 17:09
                                       ┗Re:  こうちゃん 02/12/6(金) 17:20
                                          ┗Re:  muu 02/12/10(火) 16:31
                                             ┗ここまでは理解してますか?  こうちゃん 02/12/10(火) 17:42
                                                ┗次は、違うグラフを・・・  muu 02/12/16(月) 13:28

 ───────────────────────────────────────
 ■題名 : グラフができません・・・
 ■名前 : muu
 ■日付 : 02/12/4(水) 17:35
 -------------------------------------------------------------------------
   今、卒業研究で「農作物入出荷管理システム」というシステムを作っています。
アクセスとエクセルとVBAを使っています。
今回質問したいのは、エクセルで指定日(月)のグラフを作成することについてです。
エクセルのデータは↓
   日付         出荷量
2002年1月1日    12860
2002年1月2日    16730
    ・          ・
    ・          ・

2002年2月1日    17620
2002年2月2日    12380
    ・          ・
    ・          ・

このような形で、一つのシートに追加されていきます。
どのようなグラフを作成したいかというと、日付を指定して、見たい日のグラフを表示
させたいのです。
もうひとつは、月を指定して、見たい月の総出荷量を表示させたいのです。
データは、毎日追加されていくのでコードを変えなくてもグラフが追加されるように
したいのですが・・・

どなたかこの文章を理解できた方、よろしくお願いします☆
 ───────────────────────────────────────  ■題名 : Re:グラフができません・・・  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/5(木) 9:14  -------------------------------------------------------------------------
   muuさん、こんにちは

条件が今ひとつわかりませんので教えてください。

>今、卒業研究で「農作物入出荷管理システム」というシステムを作っています。
>アクセスとエクセルとVBAを使っています。
>今回質問したいのは、エクセルで指定日(月)のグラフを作成することについてです。
>エクセルのデータは↓
>   日付         出荷量
>2002年1月1日    12860
>2002年1月2日    16730
>    ・          ・
>    ・          ・
>
>2002年2月1日    17620
>2002年2月2日    12380
>    ・          ・
>    ・          ・
>
>このような形で、一つのシートに追加されていきます。
>どのようなグラフを作成したいかというと、日付を指定して、見たい日のグラフを表示
>させたいのです。
日付に対して出荷量が複数あるんですか?
それとも複数の農作物が同一日付にあるんですか?で、日付を指定して、その農作物ごとの出荷数のグラフ・・・ってこと?

VBAでなく、エクセルのピボットグラフではいけませんか?
ピボットテーブルのページに「日付」を指定してピボットテーブル、ピボットグラフを作成します。
ピボットテーブル(ピボットグラフ)のページで見たい日付を選択すれば、その日付のグラフがみれます。

>もうひとつは、月を指定して、見たい月の総出荷量を表示させたいのです。
こちらもピボットテーブルでいけそうですね。
Month関数等で月を計算する列を作っておいて、ピボットテーブルを作成すればいいとおもいますが・・

>データは、毎日追加されていくのでコードを変えなくてもグラフが追加されるように
>したいのですが・・・
データ範囲を十分に広くしとくといいです。ピボットテーブルには「(空白)」行が1つ追加されますが、表示しないようにしておけばいいですよね。

#muuさんの考えと違っていたら、ごめんなさい。
 ───────────────────────────────────────  ■題名 : Re:グラフができません・・・  ■名前 : muu  ■日付 : 02/12/5(木) 9:34  -------------------------------------------------------------------------
   説明が下手でごめんなさい。

>日付に対して出荷量が複数あるんですか?
>それとも複数の農作物が同一日付にあるんですか?で、日付を指定して、その農作物ご
>との出荷数のグラフ・・・ってこと?
日付に対しては出荷量は一つだけです。その日の出荷量の合計です。

>VBAでなく、エクセルのピボットグラフではいけませんか?
ピボットグラフも試してみたのですがいまいち良くできなかったのです。

>Month関数等で月を計算する列を作っておいて、ピボットテーブルを作成すればいいとお>もいますが・・
今後、参考にさせていただきます。

今、なんとかがんばってます。また、分からないことがあったときは
よろしくお願いしますm(_ _)mありがとうございました。
 ───────────────────────────────────────  ■題名 : Re:グラフができません・・・  ■名前 : muu  ■日付 : 02/12/5(木) 10:24  -------------------------------------------------------------------------
   昨日の質問は私の説明が悪くてすいませんでした(*o*)

また、分からなくなってので聞いてください。説明もいっしょに。

エクセルのデータには、1行目に項目が入っています。(A1→日付、B1→出荷量)
A2からは日付が入っています。その日付はどんどん増えていきます。
A3から出荷量が入っています。その出荷量は、1日の合計の総出荷量が1行ごとに。

今は、1ヶ月のグラフを表示できましたが、私が作成したいのは指定した期間のグラフ
です。(日と月の。)
例えば、インプットボックスに1月3日から1月28日と入力して出荷量のグラフを
表示させたいのです。もうひとつは、2002年4月から2002年8月の出荷量を
グラフ化して表示させたいのです。

もし、分かりましたらよろしくお願いします。
 ───────────────────────────────────────  ■題名 : 今ひとつはっきりしませんが・・  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/5(木) 11:57  -------------------------------------------------------------------------
   muuさん、こんにちは

>エクセルのデータには、1行目に項目が入っています。(A1→日付、B1→出荷量)
>A2からは日付が入っています。その日付はどんどん増えていきます。
>A3から出荷量が入っています。その出荷量は、1日の合計の総出荷量が1行ごとに。
A3からですか?表のフォーマットは最初の質問と違うのでしょうか?

>今は、1ヶ月のグラフを表示できましたが、私が作成したいのは指定した期間のグラフ
>です。(日と月の。)
>例えば、インプットボックスに1月3日から1月28日と入力して出荷量のグラフを
>表示させたいのです。もうひとつは、2002年4月から2002年8月の出荷量を
>グラフ化して表示させたいのです。
>
>もし、分かりましたらよろしくお願いします。

とりあえず表のフォーマットが最初の質問と同じとして、インプットボックスで日付を入力してその範囲のグラフを作ります。

#"Sheet1"シートのA列に日付、B列に出荷量(1行目はタイトル)として、他の列にはデータがないものとしています。
D列とE列にインプットボックスに入力された日付に該当するデータを抽出して、それを元にしてグラフを作成します。

(今回は条件がまだ把握しきれていないので、日付指定の例だけUPしときますね。)

Sub test()
  Dim MaxRow As Long
  Dim i As Long
  Dim S_Day As String
  Dim E_Day As String
  Dim j As Long
  
  '抽出データ範囲を削除します
  Range(Cells(1, 4), Cells(Range("D1").End(xlDown).Row, 5)).ClearContents
  
  'データ範囲を取得します
  MaxRow = Range("A65536").End(xlUp).Row
  
  '開始日と終了日入力
  S_Day = InputBox("開始日を入力してね")
  E_Day = InputBox("こんどは終了日だよ")
    
  If Not IsDate(S_Day) Or Not IsDate(E_Day) Then
    MsgBox "日付をいれなくちゃダメ!!"
    Exit Sub
  End If

  'データ抽出
  Cells(1, 4).Value = Cells(1, 1).Value
  Cells(1, 5).Value = Cells(1, 2).Value
  j = 2
  For i = 2 To MaxRow
    If Cells(i, 1).Value >= CDate(S_Day) And _
      Cells(i, 1).Value <= CDate(E_Day) Then
    
      Cells(j, 4).Value = Cells(i, 1).Value
      Cells(j, 5).Value = Cells(i, 2).Value
      j = j + 1
    
    End If
  Next

  'グラフの追加
  'グラフの種類やフォーマットはマクロ記録で好みのグラフを追加してみて
  'それにあわせて変更してください。
  Charts.Add
  ActiveChart.ChartType = xlColumnClustered
  ActiveChart.SetSourceData _
    Source:=Sheets("Sheet1").Range("D1:E" & CStr(j - 1)), PlotBy:= _
    xlRows
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"

End Sub
 ───────────────────────────────────────  ■題名 : Re:今ひとつはっきりしませんが・・  ■名前 : muu  ■日付 : 02/12/5(木) 12:56  -------------------------------------------------------------------------
   ありがとうございます。早速試してみます。
 ───────────────────────────────────────  ■題名 : Re:今ひとつはっきりしませんが・・  ■名前 : muu  ■日付 : 02/12/5(木) 14:52  -------------------------------------------------------------------------
   >A3からですか?表のフォーマットは最初の質問と違うのでしょうか?
間違えました*最初のでいいのです。

だいたいできてきたのですが、一つのシートに入っているデータを月の合計でグラフにする事はできないのでしょうか?
 ───────────────────────────────────────  ■題名 : こんどは月集計(ピボットテーブル使います)  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/5(木) 16:14  -------------------------------------------------------------------------
   muuさん、こんにちは

>だいたいできてきたのですが、一つのシートに入っているデータを月の合計でグラフにする事はできないのでしょうか?
どんな形でできたのですか?
前のコードはお役にたっているのですか?
回答しやすいようにそちらの情報はできるだけUPするようにしてくださいね。
見当違いな回答すると、お互い無駄がでますから。(^^;)

じゃあ今度は月別の集計の例を・・・

まず、C1に「月」と入力しておきます。
C2以降に次の計算式をセットします。
=YEAR(A2) & "/" & RIGHT("0" & MONTH(A2),2)
この表を元に、ピボットテーブルとピボットグラフを作成しておきます。

以下の例はピボットテーブルをデータと同一シートに作成し、名前を"ピボットテーブル1"とした例です。

Sub test2()

  Dim MaxRow As Long
  Dim i As Long
  Dim S_Month As String
  Dim E_Month As String
  Dim S_MonthCheck As Boolean
  Dim E_MonthCheck As Boolean
  Dim Pitem As Variant
  
  '抽出データ範囲を削除します
  Range(Cells(1, 4), Cells(Range("D1").End(xlDown).Row, 5)).ClearContents
  
  'データ範囲を取得します
  MaxRow = Range("A65536").End(xlUp).Row
  
  '月の計算式設定
  For i = 2 To MaxRow
    If Range("C" & i).Formula = "" Then
      Range("C" & i).FormulaR1C1 = _
        "=YEAR(RC[-2]) & ""/"" & RIGHT(""0"" & MONTH(RC[-2]),2)"
    End If
  Next
  
  'ピボットテーブルのデータ範囲更新
  Range("H3").Select
  ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
    "Sheet1!R1C1:R" & MaxRow & "C3"
  Application.CommandBars("PivotTable").Visible = False
  
  '開始月と終了月入力
  S_Month = InputBox("開始月を入力してね。2001/02みたいにね")
  E_Month = InputBox("こんどは終了月だよ")
    
  If Not IsDate(S_Month) Or Not IsDate(E_Month) Then
    MsgBox "月をいれなくちゃダメ!!"
    Exit Sub
  End If
  
  'ピボットテーブルのデータチェック
  S_MonthCheck = False
  E_MonthCheck = False
  For Each Pitem In ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("月").PivotItems
    If S_Month <= Pitem Then
      S_MonthCheck = True
    End If
    If E_Month >= Pitem Then
      E_MonthCheck = True
    End If
  Next
  
  If Not (S_MonthCheck And E_MonthCheck) Then
    MsgBox "そんなデータはないよ!!"
    Exit Sub
  End If
  
  'ピボットテーブルの月ごとの表示設定
  For Each Pitem In ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("月").PivotItems
    If S_Month <= Pitem And E_Month >= Pitem Then
      Pitem.Visible = True
    Else
      Pitem.Visible = False
    End If
  Next

End Sub

#「ピボットテーブルじゃやだ!!」ってことなら、そういってくださいね。
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/5(木) 16:44  -------------------------------------------------------------------------
   ピボットテーブルを作って、データが追加されるとピボットテーブルも更新されますよね?
あと、シートに項目を追加しないといけないのですか・・?
項目を追加しないでできる方法があったら教えて欲しいのですが・・・
先ほどのは、今から試してみます!!
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/5(木) 16:45  -------------------------------------------------------------------------
   あっすいません!
やっぱり項目を追加してやります!!
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/6(金) 11:37  -------------------------------------------------------------------------
   やっぱり項目を追加しないやりかたでやります。
ピボットグラフも使わないで作りたいです。

Sub MyChart4()
  Dim ASh As Worksheet
  Dim MyD1 As Integer, MyD2 As Integer
  Dim i As Long, j As Long
  Dim Ck As Boolean
  Dim Tp As Single, Hp As Single, NewT As Single
   
  Do
   MyD1 = Application _
   .InputBox("グラフのプロット開始の月を入力して下さい", Type:=1)
   If MyD1 = False Then Exit Sub
  Loop While MyD1 < 1 Or MyD1 > 12
  Do
   MyD2 = Application _
   .InputBox("グラフのプロット終了の月を入力して下さい", Type:=1)
   If MyD2 = False Then Exit Sub
  Loop While MyD2 < 1 Or MyD1 > 12
  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
   If IsDate(Cells(i, 1).Value) Then
     If Month(Cells(i, 1).Value) = MyD1 Then
      Ck = True: Exit For
   End If
   End If
    
  Next i

  If Ck = False Then
   MsgBox "日付が見つかりません", 48
   Exit Sub
  End If
  Ck = False
  For j = Cells(Rows.Count, 1).End(xlUp).Row To i Step -1
   If IsDate(Cells(j, 1).Value) Then
     If Month(Cells(j, 1).Value) = MyD2 Then
      Ck = True: Exit For
     End If
   End If
  Next j
  If Ck = False Then
   MsgBox "日付が見つかりません", 48
   Exit Sub
 
  End If

  Set ASh = ActiveSheet
  If ASh.ChartObjects.Count > 0 Then
   Tp = ASh.ChartObjects(ASh.ChartObjects.Count).Top
   Hp = ASh.ChartObjects(ASh.ChartObjects.Count).Height
   NewT = Tp + Hp + 10
  Else
   NewT = ASh.Range("A2").Top
  End If
  ASh.ChartObjects.Add(ASh.Range("D1").Left, NewT, 350, 250).Select
  
  With ActiveChart
   .ChartWizard Source:=ASh.Range("A" & i & ":B" & j), _
   Gallery:=xlLine, CategoryLabels:=1, HasLegend:=2, _
   Title:=MyD1 & "月〜" & MyD2 & "月出荷量"
   .Axes(xlCategory).TickLabels.Font.Size = 9
   .Axes(xlValue).TickLabels.Font.Size = 9
   
  End With
  Set ASh = Nothing
End Sub

ここから、グラフを月の合計を出して表示することはできるのでしょうか?
もう一つ、インプットボックスに入力する形をyyyy/mmにするにはどうしたらよいのでしょうか?


さきほどのコードに

Dim MySum As Long

If Ck = False Then
MsgBox "該当する月の最終日付が見つかりません", 4
Exit Sub
End If
MySum = WorksheetFunction.Sum(ASh.Range("B" & StRow & ":B" & EnRow))
If ASh.ChartObjects.Count > 0 Then

を追加したいのですが・・・

どうしたらよいのでしょうか??

どなたか宜しくお願いしますm(_ _)m
  
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/6(金) 13:18  -------------------------------------------------------------------------
   muuさん、こんにちは
またまた、こうちゃんですみません。

>もう一つ、インプットボックスに入力する形をyyyy/mmにするにはどうしたらよいのでしょうか?

InputBoxのType 1 は数値入力ですから、yyyy/mmで入力すると割り算しちゃいます。
Typeを2(テキスト)にすれば入力できますね。
その場合若干変更が必要になります。
こんな感じ・・

  Dim ASh As Worksheet
  Dim MyD1 As String, MyD2 As String
  Dim i As Long, j As Long
  Dim Ck_S As Boolean
  Dim Ck_E As Boolean
  Dim Tp As Single, Hp As Single, NewT As Single
 
  MyD1 = Application.InputBox("グラフのプロット開始の月を入力して下さい (yyyy/mm 形式)", Type:=2)
  If Len(MyD1) = 0 Then Exit Sub
  
  MyD2 = Application.InputBox("グラフのプロット終了の月を入力して下さい", Type:=2)
  If Len(MyD2) = 0 Then Exit Sub
 
  If Not (IsDate(MyD1) Or IsDate(MyD2)) Then
    MsgBox ("入力が間違いです")
    Exit Sub
  End If
 
  Ck_S = False
  Ck_E = False
  For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not Ck_S And Cells(i, 1).Value >= CDate(MyD1) Then
       Ck_S = True
    End If
    If Not Ck_E And Cells(i, 1).Value <= DateAdd("d", -1, DateAdd("m", 1, CDate(MyD2))) Then
       Ck_E = True
    End If
    If Ck_S And Ck_E Then Exit For
  Next i
  
  If Not (Ck_S And Ck_E) Then
    MsgBox "該当する日付が見つかりません" & vbCrLf & _
    "開始月[" & MyD1 & "] 終了月[" & MyD2 & "]", 48
    Exit Sub
  End If


>ここから、グラフを月の合計を出して表示することはできるのでしょうか?
月の合計とは、たとえば2002/01〜2002/03を指定して、1月、2月、3月のそれぞれ出荷量を合計してグラフを作る、ってことでいいんですか?

MySum =・・・のように変数を使って集計することは以下の手順でできます。
1)月要素と出荷量要素の配列変数を宣言する。
2)指定された開始月と終了月の間隔数えてReDimで配列数を設定する
3)データを順に見ていって、A列がら「月」を取得、同一月の出荷量要素の変数に計上する。

メッセージボックスに表示するとかならそれでいいんでしょうが、これをグラフにするなら、月ごとの合計をセルに格納して表を作成し、その表をグラフにするほうがいいんじゃないでしょうか?

#1月のグラフ、2月のグラフのように月ごとに違うグラフを作成するんじゃないですよね?理解力が弱くてよくわかりません(^^;)
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : Jaka  ■日付 : 02/12/6(金) 14:00  -------------------------------------------------------------------------
   こうちゃんさん、こんにちは。
1回ポッキリですから、横レスお許し下さい。

フォームに開始日用のCombobox1と終了日用のCombobx2を各1個づつ、実行用と終了用のCommndbottonを作って、下記コードを全部フォームモジュールに張りつけてください。
A列の日付は、書式設定にて1月5日の様に表示される様になっているとします。
では。

Dim EndRow As Long

Private Sub ComboBox1_Change()
  CMBS = ComboBox1.ListIndex + 2
  ComboBox2.Clear
  If ComboBox1.Value <> "" Then
    For i = ComboBox1.ListIndex + 3 To EndRow
      ComboBox2.AddItem Cells(i, "A").Text
    Next
  End If
End Sub

'実行
Private Sub CommandButton1_Click()
  Dim Sday As String, EDay As String
  Sday = ComboBox1.Value
  EDay = ComboBox2.Value
  MainPL Sday, EDay
End Sub

Private Sub CommandButton2_Click()
  Unload Me
  End
End Sub

Private Sub UserForm_Initialize()
  EndRow = Cells(Rows.Count, "A").End(xlUp).Row
  ComboBox1.MatchEntry = fmMatchEntryFirstLetter
  ComboBox2.MatchEntry = fmMatchEntryFirstLetter
  For i = 2 To EndRow
    ComboBox1.AddItem Cells(i, "A").Text
  Next
End Sub

Sub MainPL(Sday As String, EDay As String)
Dim 範囲 As String
  Application.ScreenUpdating = False
  ActiveCell.Activate
  GRow = 2
  With ActiveSheet.Range("A" & GRow & ":A" & EndRow + 1)
     Set セル = .Find(Sday, After:=Range("A" & EndRow + 1), LookIn:=xlValues)
     GGRow = セル.Row
  End With
  With ActiveSheet.Range("A" & GGRow & ":A" & EndRow + 1)
     Set セル = .Find(EDay, LookIn:=xlValues)
     GERow = セル.Row
  End With
  範囲 = "A" & GGRow & ":B" & GERow
  ActiveSheet.ChartObjects(1).Delete
  Charts.Add
  ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:="2 軸上の折れ線と縦棒"
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(範囲), PlotBy:= _
    xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  With ActiveChart
    .HasAxis(xlCategory, xlPrimary) = True
    .HasAxis(xlValue, xlPrimary) = True 
    .HasTitle = True
    .ChartTitle.Characters.Text = "グラフタイトル名"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "日付"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "出荷量" 
  End With
  ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
  ActiveChart.HasLegend = False
  ActiveChart.HasDataTable = False
  ActiveChart.Axes(xlCategory).Select
  Selection.TickLabels.Orientation = xlUpward
  ActiveChart.Axes(xlValue).AxisTitle.Select
  With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .Orientation = xlVertical
  End With
  With ActiveSheet
    .ChartObjects(1).Left = 140
    .ChartObjects(1).Top = 110
  End With
  Range("A1").Activate
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/6(金) 16:10  -------------------------------------------------------------------------
   こんにちは☆

さっそく試してみます!
 ───────────────────────────────────────  ■題名 : Re:グラフはあらかじめ作っていないとダメですか?  ■名前 : muu  ■日付 : 02/12/6(金) 16:36  -------------------------------------------------------------------------
   Jakaさん、私の頭ではコードを貼り付けて、どうすればよいのかわかりません。
ごめんなさい。

ボタンを作って、コードを貼り付けたのですが、実行を押すとマクロを作成するダイヤログボックスがでてきます。そこからどうしたらいいのかがわかりません。
 ───────────────────────────────────────  ■題名 : Jakaさんのコードの貼り付け場所  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/6(金) 16:50  -------------------------------------------------------------------------
    muuさん、こんにちは
>Jakaさん、私の頭ではコードを貼り付けて、どうすればよいのかわかりません。
>ごめんなさい。
>
>ボタンを作って、コードを貼り付けたのですが、実行を押すとマクロを作成するダイヤログボックスがでてきます。そこからどうしたらいいのかがわかりません。

フォームの作り方はわかりますか?
VBEで「挿入」「ユーザーフォーム」でフォームを作成しておいて、そのフォームにComboBoxを2つ、CommandButtonを2つ追加します。
デフォルトでJakaさんが指定したコントロール名になると思いますが、違ったらあわせておきます。
で、そのフォームのコードを表示(フォームを右クリックで「コードの表示」)させて、そこにJakaさんのコードを貼り付けます。
フォーム名は既定でUserForm1になると思いますので、標準モジュールに以下のコードを書いてそれを実行します。

Sub TestJaka()
  UserForm1.Show
End Sub

#Option Explicitを指定していると、宣言なしエラーがいくつかでますので、エラーになった変数を宣言してくださいね。

非常に参考になると思いますので、試してみてね。(^^)
 ───────────────────────────────────────  ■題名 : Re:こうちゃんさん  ■名前 : muu  ■日付 : 02/12/6(金) 16:55  -------------------------------------------------------------------------
   こうちゃんさんが教えてくれたコードはどこにいれたらよいですか?
お願いします☆
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/6(金) 16:09  -------------------------------------------------------------------------
   こんにちは☆

>月の合計とは、たとえば2002/01〜2002/03を指定して、1月、2月、3月のそれぞれ出荷量を合計してグラフを作る、ってことでいいんですか?
そうです。1月の合計の棒グラフ、2月の合計の棒グラフ・・・を作りたいのです。

>メッセージボックスに表示するとかならそれでいいんでしょうが、これをグラフにするなら、月ごとの合計をセルに格納して表を作成し、その表をグラフにするほうがいいんじゃないでしょうか?
なるべくならコードでやりたいのです。

こうちゃんさんが教えてくれたコード試してみます。
 ───────────────────────────────────────  ■題名 : Re:こんどは月集計(ピボットテーブル使います)  ■名前 : muu  ■日付 : 02/12/6(金) 16:48  -------------------------------------------------------------------------
   試してみたのですが・・・

あのコードをどこにいれたらいいのか良くわかりませんでした。
ほんとにすいません。。。何もわからなくて。。。
 ───────────────────────────────────────  ■題名 : どっちのコード?  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/6(金) 17:03  -------------------------------------------------------------------------
   muuさん:
>試してみたのですが・・・
>
>あのコードをどこにいれたらいいのか良くわかりませんでした。
>ほんとにすいません。。。何もわからなくて。。。

muuさんの書かれたコードを以下のように直せばyyyy/mm形式で入力できます。
ただし、このまま実行しても月合計のグラフにはなりません。
このコードでは、指定した開始月の1日から終了月の末日までのデータの日毎の出荷量のグラフでしかありません。

エクセルのグラフはデータ範囲にワークシートの範囲しか指定できませんので、集計用の表をエクセル上でつくらないでグラフを作成するためには外部プログラムを使うか、シェープ等を組み合わせて擬似的にグラフをつくるかしかないかも。
そうすると、と〜っても大変だと思います。
別のシートにでも集計表を作って、それでグラフを作るのがお勧めですよ。

見えるのがいやなら、そのシートを非表示にすればいいしね。

#こっちのことでいいんでしょうか?

これは標準モジュールですよ。
#ちなみにこのスレッドで私が回答したコードもすべて標準モジュールです。

Sub MyChart4()
  Dim ASh As Worksheet
  Dim MyD1 As String, MyD2 As String
  Dim i As Long, j As Long
  Dim Ck_S As Boolean
  Dim Ck_E As Boolean
  Dim Tp As Single, Hp As Single, NewT As Single
 
  MyD1 = Application.InputBox("グラフのプロット開始の月を入力して下さい", Type:=2)
  If Len(MyD1) = 0 Then Exit Sub
  
  MyD2 = Application.InputBox("グラフのプロット終了の月を入力して下さい", Type:=2)
  If Len(MyD2) = 0 Then Exit Sub
 
  If Not (IsDate(MyD1) Or IsDate(MyD2)) Then
    MsgBox ("入力が間違いです")
    Exit Sub
  End If
 
  Ck_S = False
  Ck_E = False
  For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not Ck_S And Cells(i, 1).Value >= CDate(MyD1) Then
       Ck_S = True
    End If
    If Not Ck_E And Cells(i, 1).Value <= DateAdd("d", -1, DateAdd("m", 1, CDate(MyD2))) Then
       Ck_E = True
    End If
    If Ck_S And Ck_E Then Exit For
  Next i
  
  If Not (Ck_S And Ck_E) Then
    MsgBox "該当する日付が見つかりません" & vbCrLf & _
    "開始月[" & MyD1 & "] 終了月[" & MyD2 & "]", 48
    Exit Sub
  End If
 
  Set ASh = ActiveSheet
  If ASh.ChartObjects.Count > 0 Then
    Tp = ASh.ChartObjects(ASh.ChartObjects.Count).Top
    Hp = ASh.ChartObjects(ASh.ChartObjects.Count).Height
    NewT = Tp + Hp + 10
  Else
    NewT = ASh.Range("A2").Top
  End If
  
  ASh.ChartObjects.Add(ASh.Range("D1").Left, NewT, 350, 250).Select
 
  i = Cells(Rows.Count, 1).End(xlUp).Row
  With ActiveChart
    .ChartWizard Source:=ASh.Range("A" & 2 & ":B" & i), _
    Gallery:=xlLine, CategoryLabels:=1, HasLegend:=2, _
    Title:=MyD1 & "月〜" & MyD2 & "月出荷量"
    .Axes(xlCategory).TickLabels.Font.Size = 9
    .Axes(xlValue).TickLabels.Font.Size = 9
  
  End With
  Set ASh = Nothing

End Sub
 ───────────────────────────────────────  ■題名 : Re:  ■名前 : muu  ■日付 : 02/12/6(金) 17:09  -------------------------------------------------------------------------
   >別のシートにでも集計表を作って、それでグラフを作るのがお勧めですよ。
集計表はデータが追加されても自動で更新されますか?
 ───────────────────────────────────────  ■題名 : Re:  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/6(金) 17:20  -------------------------------------------------------------------------
   muu さん:
>>別のシートにでも集計表を作って、それでグラフを作るのがお勧めですよ。
>集計表はデータが追加されても自動で更新されますか?

そのように作ればね。
グラフを作成するときに集計表も更新するとか・・

あのね、私はmuuさんが何をしたいのか、まだよくわかってないです。(^^;)

「1月の合計のグラフ、2月の合計のグラフ」って発言がありましたが、それだと棒が1本のグラフになっちゃいませんか?

それと、グラフを作成するタイミングはユーザーが指定するんですか?ボタンクリックしてとか・・

どうもmuuさんは質問するだけで、私からの質問にお答えいただけないような気がします。
質問者のしたいことを回答者が把握できないと、回り道になっちゃいますから、聞かれたことには答えたほうが解決はやいですよ。(^^;)
 ───────────────────────────────────────  ■題名 : Re:  ■名前 : muu  ■日付 : 02/12/10(火) 16:31  -------------------------------------------------------------------------
   >「1月の合計のグラフ、2月の合計のグラフ」って発言がありましたが、それだと棒が1本のグラフになっちゃいませんか?
1月のグラフで1本、2月のグラフで1本・・・ですよ。

>それと、グラフを作成するタイミングはユーザーが指定するんですか?ボタンクリックしてとか・・
そうです。ボタンをクリックして期間を指定してグラフを表示させるようにしたいのです。

私は、まだVBAをよくわりません。
 ───────────────────────────────────────  ■題名 : ここまでは理解してますか?  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/10(火) 17:42  -------------------------------------------------------------------------
   muuさん、こんにちは
>>「1月の合計のグラフ、2月の合計のグラフ」って発言がありましたが、それだと棒が1本のグラフになっちゃいませんか?
>1月のグラフで1本、2月のグラフで1本・・・ですよ。
だから、この表現がわからないんです(^^;)

指定した月の集計値の棒グラフを作りたいでいいんですよね。
1月のグラフ、2月のグラフじゃなくて、グラフは1個で、グラフの要素が月ごとの合計ってことですよね。

で、ここまでの例題は試験しましたか?
直前の回答で示した例を実行すると、指定した月の日ごとの出荷量が要素のグラフができたと思います。
それを月の合計を要素のものにするのであれば、やはり月ごとの集計表をVBAで作成して、それをグラフにするのが一番わかりやすいのではないかと思いますが、いかがですか?
#VBA初心者なら、なおのこと、エクセルの機能をできるだけ利用したほうがいいと思います。
 ───────────────────────────────────────  ■題名 : 次は、違うグラフを・・・  ■名前 : muu  ■日付 : 02/12/16(月) 13:28  -------------------------------------------------------------------------
   こんにちは。

今現在、このようなコードでできることが分かりました。↓

Sub MyChart3()
Dim ASh As Worksheet
Dim MyD1 As Date, MyD2 As Date, MyD As Date
  
Dim i As Long, j As Long
Dim Ck As Boolean
Dim Tp As Single, Hp As Single, NewT As Single
  
Dim 月差 As Integer, 月cnt As Integer
Dim Graph_月() As Date
Dim Graph_生産量() As Double
 
Do
MyD1 = Application.InputBox("何月からですか?(【西暦】年/月)" & _
vbLf & "半角で入力して下さい", Type:=1)
If MyD1 = False Then Exit Sub
Loop While Not IsDate(MyD1)
    
Do
MyD2 = Application.InputBox("何月までですか?(【西暦】年/月)" & _
vbLf & "半角で入力して下さい", Type:=1)
If MyD2 = False Then Exit Sub
Loop While Not IsDate(MyD2)
 
'開始月と終了月の月差を算出し、データ格納領域を確保
月差 = DateDiff("m", MyD1, MyD2)
ReDim Graph_月(月差) As Date    '月差分、配列を確保
ReDim Graph_生産量(月差) As Double
    
For 月cnt = 0 To 月差
Graph_月(月cnt) = DateAdd("m", 月cnt, MyD1)
    
Next 月cnt
 
'データを読込み、月毎に生産量を合計
Ck = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If IsDate(Cells(i, 1).Value) Then
月cnt = DateDiff("m", MyD1, Cells(i,1).Value)
If 月cnt >= 0 And 月cnt <= 月差 Then
Graph_生産量(月cnt) = Graph_生産量(月cnt) + Cells(i, 13)
Ck = True
End If
End If
    
Next i
If Ck = False Then
MsgBox "データが有りません", 48
Exit Sub
End If
 
'セルに月毎のデータを出力
Columns("Y:Z").ClearContents    '前回出力をクリア
Cells(1, 25) = "年月": Cells(1, 26) = "生産量" 'タイトル
For 月cnt = 0 To 月差
Cells(月cnt + 2, 25) = Graph_月(月cnt)
Cells(月cnt + 2, 26) = Graph_生産量(月cnt)
    
Next 月cnt
  
'グラフ作成
Set ASh = ActiveSheet
Charts.Add
  
ActiveChart.ChartType = xlColumnClustered
ActiveChart.Location Where:=xlLocationAsNewSheet
   
With ActiveChart
.ChartWizard Source:=ASh.Range("Y2" & ":Z" & 月差 + 2), _
Gallery:=xlColumn, CategoryLabels:=1, HasLegend:=False, _
Title:=Format(MyD1, "yyyy/mm") & "〜" & Format(MyD2, "yyyy/mm"
) & " 出荷量"
With .Axes(xlCategory).TickLabels
.Font.Size = 9
.Orientation = xlUpward
End With
.Axes(xlValue).TickLabels.Font.Size = 9
End With
Set ASh = Nothing
End Sub

これで、月を指定して、その期間内のグラフを表示させることができました。

今度は、品目ごとのグラフを期間を指定して作りたいのですが・・・

以前、データがどのように追加されていくかをこのような形↓といいましたが
、これは、簡単にしてあるもので(不必要なものは省いています。)実際は、
21の項目があります。

    日付        出荷量
  2002年1月1日      12890
  2002年1月2日      16730
  2002年1月3日      17680
     ・         ・
     ・         ・
     ・         ・
  

今度は、品目ごとにグラフを作りたいので。。。

     A        L       M    
1  2002年1月1日 ‖  DPバーバラ   12890
2  2002年1月2日 略  Gバランタイン    16730
3  2002年1月3日 ‖  Wキャンドル    17680
     ・        ・      ・
     ・        ・      ・

このようにデータが入っているとします。(項目は削除しました。)
指定した期間の中で品目ごとのグラフを作る方法が分かりません。
分かる方いましたらおねがいします。

※A列が日付、L列が品目、M列が出荷量。
 レイアウトは変えないでコードで。
 コマンドボタンにマクロを登録させてクリックしただけでグラフが表示されるようにし たい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 459