[[20050907093553]] 『ピポットテーブルの元データー範囲』(ホミホミ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ピポットテーブルの元データー範囲』(ホミホミ)

マクロの記録でピポットテーブルを作りましたが、SourceDataの範囲が変動する場合どのように書き換えたらよいのでしょうか?教えて下さい。

  下記の"Sheet1!R1C1:R31C3"の部分です。Range等に書き換えてみても文字が赤くなって動きません。

Sub Macro1()

    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R31C3", TableDestination:="R1C5", TableName:="ピボットテーブル1"
    ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="品番"
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量").Orientation = _
        xlDataField
End Sub

 とり急ぎ。
[[20050324134217]]『一覧から年齢別に数えるとき』(マル) 
 一般機能での可変は上記を参考に。
 VBAコードはどなたか素敵な紳士が考えてくれるでしょう。
 (代奈)

上記で、範囲は対応できました。しかしながら、出来ればVBAで出来ないものでしょうか?
どなたかお願いします。

VBAでは"Sheet1!R1C1:R31C3"をRange("a1").CurrentRegionに変更したら出来ました。
お騒がせしました。


やっぱり、なにかおかしいのでお願いします。同じシート上ならRange("a1").CurrentRegionでokになるのですがシートが違うと動きません!
お願いします。

 ん、? っちゅうことはSheets("Sheet1").Range("a1").currentregion になるんと 
 ちゃいまっか?
       素敵な紳士(弥太郎)← アッホ〜!

早速、やってみました。同一ブック内のシートではokになるのですが、別ブックのシートではどのようにすればよいのでしょうか?

 Workbooks("別のブック名.xls").Sheets("sheet1").Range("a1").CurrentRegion
 でいけるんとちゃいまっか。
     (弥太郎)

下記にコードを記入しますが、マクロを動かすと黄色く反転してデバック状態になります。
理由がわかりません。

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _

        Workbooks("net52401.xls").Sheets("net52401").Range("a1").CurrentRegion, TableDestination:= _
        "'[net52401 マクロテスト.xls]Sheet1'!R2C1", TableName:="ピボットテーブル1"

 これってブック名とシート名が一緒でッか??
       (弥太郎)

 それか、その別のブックを開いてないとか・・・
 今から出かけますもんで、ごめんなはれや。別の素敵な紳士が回答してくれると
 思います。
 頼んまっせ〜!
    っちゅうてすたこら逃げる(弥太郎)

はい!同じで・・まずいでしょうか・・・

 マクロ全てを書きますのでお願いします。
取りあえず7019行までの範囲にしてマクロを動かしてます。
いまのところ問題ではないので、急ぎませんのでお願いします。

Sub Macro1()
'
' Macro4 Macro
' マクロ記録日 : 2005/8/5'

'列の削除

    Columns("A:B").Select
    Selection.Delete Shift:=xlToLeft
'デスクトップのファイルを開く
    Workbooks.Open FileName:= _
        "C:\Documents and Settings\nflo111\デスクトップ\net52401.xls"
    Windows("net52401.xls").Activate
    Range("A6", ActiveCell.SpecialCells(xlLastCell)).Select
        'ActiveCell.SpecialCells(xlLastCell)).Select
    Range("A4").Value = "1"
    Range("A4").AutoFill Destination:=Range("A4:R4"), Type:=xlFillSeries
    Range("A4:R4").Select
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C="""",R[-2]C,R[-1]C)"
    Selection.AutoFill Destination:=Range("A6:R6"), Type:=xlFillDefault

    '7019行までしか対応してない

    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
        "net52401!R6C1:R7019C18", TableDestination:= _
        "'[net52401 マクロテスト.xls]Sheet1'!R2C1", TableName:="ピボットテーブル1"
    ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="品目番号"
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("納品可能数").Orientation = _
        xlDataField
    ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect _
        "'#001 ケーブルASSY           '", xlDataOnly
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 : 納品可能数").Function _
        = xlSum
    Range("A1").Select

    ActiveCell.Value = "品目番号"
    Range("b1").Select
    ActiveCell.Value = "納品可能数量"
    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="<0", Operator:=xlAnd
    Columns("A:B").Select  ' Cells.Select
    Selection.Font.Name = "MS Pゴシック"
     'Application.EnableEvents = True  'False
     Application.DisplayAlerts = False '確認ダイアログを表示させない
    Range("a1").Select
    Workbooks(2).Close

End Sub


 難しいことは分かりませんが、
 範囲に名前をつけて記録をとるとこうなります。

 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="リスト"). _
        CreatePivotTable TableDestination:="", TableName:="ピボットテーブル1"
 応用できませんか。
 (代奈)


なにか頭の中がこんがらがって、自分がやってることがよくわからなくなってきました。
出直してきます。
ただ、ブックのnet52401は会社のシステムから出てきたデーターなので、リスト範囲を毎回するのが・・・・

 毎回新しいブックということですね。
 では元データの最終行を例えば Range("A65536").End(xlUp).Row
 などとすればよいような?
 (代奈)

下記で実行するとだめですが・・・

 ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
        Range("a6", Range("A65536").End(xlUp).Row), TableDestination:= _
        "'[net52401 マクロテスト.xls]Sheet1'!R2C1", TableName:="ピボットテーブル1"
間違っているでしょうか?

ちょっと間違えてました

 ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
        Range("a6", Range("R65536").End(xlUp)), TableDestination:= _
        "'[net52401 マクロテスト.xls]Sheet1'!R2C1", TableName:="ピボットテーブル1"
でなんとか出来ましたが、これって正しい使い方でしょうか?

なにはともあれ、皆さんのご協力有難うございました。


 ありゃぁ、素敵な紳士は現れんかったみたいですけど、ピボテの女王がなんとか嵐を
 鎮めてくれたみたいでんなぁ(笑。
  いやぁ、昨夜は寄り合いが有ってしこたま呑んどったし、今日は仕事で出かけ
 とりましたさかい、放ったらかしにしてごめんなはれや・・・。
 尤も時間があってもピボットテーブルなんざ、知るよしもおまへんさかい、満足なお
 答えでける訳おまへんねんけどナ(笑
  ま、なんですワ、ピポテの女王がマクロをマスターするか、弥太郎とかいうヤツが
 ピボットテーブルを手ぇのうちにいれるかすりゃ、なんちゅうことおまへんねんけど
 今日明日っちゅう訳にはいきまへんさかいなぁ。
 一番の近道はなんちゅうても なんとかする力 をそなえとるマルさんの努力でっせ。
    え〜っと、素敵な紳士返上の(弥太郎)

些細な質問でもみなさん気にかけてもらって有難うございます。
これからも宜しくお願いします。

通りすがりです。

参考になりました ^^
ありがとうございました。

ココロ


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.