[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルの結果をコピー???』(エクセル姫)
たとえば、データと名付けられたシートのセルA1と同じ値を、既存のピボットテーブルで検索し、その結果を、データのシートに戻って埋め込む作業を、マクロでしてみようとするときに、とりあえず、コピーを使って、マクロを記録してみましたが、コピー範囲に問題があります。
この記録されたマクロの”Range("A3:N19").Select の ところですが、”データ”と呼ばれるシート上のA1の値によっては、ピボットテーブルの検索結果は、A3から、N19以上のセル範囲が、必要となります。どのように、解決できるのか、ちょっとわかりません。どうしたらいいでしょうか?
ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets("地域別").Select ActiveSheet.PivotTables("PivotTable1").PivotFields("地域").CurrentPage= Worksheets("データ").Range("A1").Value
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
いたらない説明で、ほんとにすみません。わかりにくかったでしょうか、、、。ほんとにすみません。私の質問は、マクロによって検索されるピボットテーブルの結果をそのピボットテーブルごと、違うシートにコピーしたいのですが、範囲の指定をどのように、していいのか、わからないんです。 もしどなたか、ご存知の方、おしえていただけませんか? よろしくおねがいします。(エクセル姫)
ピボットテーブルの回答はなかなか難しいというか、回答している方で使っている方が少なそうで、 回答が出にくいですね(^_^A;
本題の範囲の指定ですが、A3は固定ですよね。
そうであれば、以下で範囲のコピーが出来ませんか。
※ただし、ピボットテーブルの右側にデータ無い、下にもデータが無い場合です。 MyRow = Range("A65536").End(xlUp).Row MyRange = Range("IV" & MyRow).End(xlToLeft).Address Range("A3:" & MyRange).Copy
もし、N列も固定であれば以下でも良いです。
MyRow = Range("A65536").End(xlUp).Row Range("A3:N" & MyRow).Copy
(川野鮎太郎)
ピボットテーブルはよく知らないのですが・・・ ピボットテーブル内を選択した状態で、 ピボットテーブルツールバーの ピボットテーブル→選択→テーブル全体 で選択してコピー貼り付けするのをマクロの自動記録したら 参考になるコードが出てこないでしょうか? ちなみに↓のようなコードが出てきました。 Sub Macro1() Range("C11").Select ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "", xlDataAndLabel, True Selection.Copy Sheets("Sheet3").Select Range("B3").Select ActiveSheet.Paste End Sub 何かの足しにでもなれば・・・(Hatch)
(・0・*)ホ,(゜0゜*)ホ--ッッ!!! _〆\(..;) メモメモ
※誤解のないように追加: >回答している方で使っている方が少なそうで、回答が出にくいですね(^_^A;
決して、ピボットテーブルが使いにくいなどではないです。 データの集計機能としては優れていると思います。 使う機会に恵まれないって言った方が良いかな(^_^A; (川野鮎太郎)
エクセル姫より〜 川野さん、Hatchさん、お時間いただいてどうもありがとうございます。今、Hatchさんのアドバイスを受けて、実験してみましたが、既存のピボットテーブルごと、移動してしまうとゆう結果になりました。(ピボットテーブル内のデータ量が多いので、マクロで常にピボットテーブルを作って、違うシートにはりつけとゆうことは、避けたいと思っているんですけど、その観点をかえれば、Hatchさんのアドバイスは、成功です! ただ、そうなると、元のピボットテーブルのデータの量が30000行以上あるので、マクロで毎回ピボットテーブルを作成すると、どこかに負担が、かかりそ〜(あまりPCにくわしくないひとの見解で、すみません)そちらも試してみるべきでしょうか? Hatchさん、どのようにおもわれますか? よろしければ、ご感想きかせてください。 これから、川野さんの範囲指定、してみま〜す!
河野さ〜ん、失敗中です。Y(>_<、)Y シクシク。 川野さんからいただいたマクロのコマンドをそのまんま、コピーして埋め込んだんです、以下のところを削除したあと。そうしましたら、ピボットテーブルの上方、一部だけが、貼り付けられるとゆう結果になってしまいました。多分、こちらの方に、非があるとおもいますが、(ほんとにマクロは初心者です)、川野さんに質問ですが、川野さんから、いただいたコマンドを埋め込む位置は、私が削除をした部分であってますか? 教えてください。
Range("A3:N19").Select
Range("N19").Activate Selection.Copy
私はやりたいことが理解できていません。 1.ピボットテーブルを使って、あるデータの集計か何かをする。 2.できたデータをどこかのシートにコピーする。 3.元のピボットテーブルは不要なので削除する。 ということになるのでしょうか? それとも、単なるデータの抽出でしょうか? それでしたらオートフィルタなどの機能でデータを抽出して 抽出データをコピーする といったことが考えられます。 毎回ピボットテーブルを作っていたらファイル容量が大きくなって ファイルが開けないなどのトラブルの原因になりそうです。 データの集計など1回だけ使うのであれば、その都度削除するとか、 作った1個のピボットテーブルの条件を変更して使い回すことも 考えられます。
# ピボットテーブルを使う機会が少ないので、的確な回答になっていないかも(^^;) (Hatch)
Hatchさん、ほんとに説明が不十分でご迷惑をおかけてしてます。すみません。 したいことを簡潔に、Hatchさんに習って箇条書きしてみます。
1.Sheet1のセルA1に値が入力される(このセルは、コンボボックスを利用しているため、セルA1で入力される値には制限があります。ピボットテーブルで検索可能な値のみの制限方法です。)
2. Sheet2の既存のピボットテーブル(このピボットテーブルはすでにSheet1のセルA1の検索用にレイアウトされています)から、Sheet1のA1で選択された値に基づく検索結果(ピボットテーブル)をSheet1に、貼り付ける作業をすべて、マクロでしようと思ってます。
私が最終的にしたいことは、Sheet1をサマリーシートの様な活用方法で、ピボットテーブルから、検索される結果のほかに、その他もろもろの情報(シート1のセルAに選択される関連情報)を組み込みたく思ってます。だから、貼り付けられるピボットテーブルの行の量が検索される値が変わるごとに、常にかわること、Sheet1に貼り付けられるときに、Sheet1上の既存の情報に上書きされないようにすることなど、いろいろ難点がありまして、どのように克服するか、頭を痛めています。困り者です。ほんとに私に時間を下さってありがとうございます。感謝しています。
σ(^◇^;)もピボットテーブルというのはあまり詳しくないっうかぁ、、 今日はじめてさわった(^^;; ヒヤアセ うんでもって察するにデータの量が変わるってことかな? つまり、、可変??? ピボットを選択してからピボットのメニューバーの中に 「データ」ってのがあるけど、、それでいいんじゃない?? これが記録したものです。 xlDataOnly ってなってるべv(=∩_∩=)v どうかな?だめかな?? (SoulMan) Sub てすと() Range("A3").Select ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "", xlDataOnly With Selection .Resize(.Rows.Count - 1, .Columns.Count - 1).Copy End With Sheets("Sheet3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False End Sub こんな風にするとデータの中身だけになったよv(=∩_∩=)v 2004/11/07 13:40
# 川野さんやSoulManさんは質問の意図を理解されているよう・・・私はよく分かっていない(^_^;) 多分、SoulManさんの方法で良さそう・・・でもエラーがでた・・・ (アプリケーション定義またはオブジェクト定義のエラーです。(?_?) ) ということで、SoulManさんへタッチ ( ^-^)/\(^o^ ) (Hatch)
みなさん、ほんとにどうもありがとうございます。Hatchさんも、一緒に考えていただいて、ほんとにうれしく思います。SoulManさん、これは、すべて記録だけで、できますか?実験してみたいんだけど、どのような手順をふめばいいのかわかりません。ほんとに初心者のくせに、したいことだけは、いっちょまえとゆうのか、、、。 ぜひ、私がしたいことを成功させて、みなさんにも、活用する機会があればと願うばかりです。ご迷惑ばかりで、ごめんなさい。
あまりいいコードとは言えないけど、、とりあえずってことで(^^;; ヒヤアセ アップしました。 v(=∩_∩=)v (SoulMan) Sub てすと() With Worksheets("sheet4") .Select .Range("A3").Select .PivotTables("ピボットテーブル1").PivotSelect "", xlDataOnly End With With Selection .Resize(.Rows.Count - 1, .Columns.Count - 1).Copy End With Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlValues Application.CutCopyMode = False End Sub http://ryusendo.no-ip.com/cgi-bin/upload/src/up0133.xls 手順は ピボットのシートを選択 ピボットを選択 ピボットのメニュー→選択→テーブル全体 もう一度 ピボットのメニュー→選択→データ リサイズは後からちょっこと書きました。 コピー シート3を選択 形式を選択して貼り付け→値 Esc ↓これも後からちょっことかきました。 Range("A65536").End(xlUp).Offset(1). どうでしょう?
うん?抽出されるデータの量によって可変にならない?? それが問題だったんじゃないの? 今、どこが問題なの? v(=∩_∩=)v (SoulMan)
このシートを利用する人がたとえば、今回は、SoulManさんにまつわるデータがみたいというときに、Sheet3のコンボボックスにSoulManさんの名前をドロップダウンリストから選択して、設置されたマクロボタンをおすと、そのシート上に、ピボットテーブルが現れるとゆうことをしたいんです!そのシート上には、その他もろもろと、情報が、くみこまれていますので、別シートのピボットテーブルをSheet3にコピーしたのち貼り付けるとゆうことに、失敗中です。単に貼り付けるだけではなく、他のデータを上書きしてけさないようにとゆうことにも、いくたびも、失敗してます。。。Y(>_<、)Y
ほんとに、忍耐強く、つきあっていただいて、どうもありがとうございます。
あっ、リサイズが余分だったのね(^^;;; これで、データが全部コピーされるわ これ以上になるとHatchさんと同じになっちゃうから多分これでいいと思うけど 後は貼り付ける場所ね?どこ?? 今は、シート3のA列の最下部に追加するようになってるけど。。 どうかな?? 遠慮しなくていいざんすよ!わかる範囲で答えてますからv(=∩_∩=)v (SoulMan) Sub てすと() With Worksheets("sheet4") .Select .Range("A3").Select .PivotTables("ピボットテーブル1").PivotSelect "", xlDataOnly End With Selection.Copy Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlValues Application.CutCopyMode = False End Sub
>その抽出される部分だけを丸ごと、サマリーのシートに貼り付けたいんです。 こっちの方が近いかな?? (Soulまん) Sub てすと() With Worksheets("sheet4") .Select .Range("A3").Select .PivotTables("ピボットテーブル1").PivotSelect "", xlDataOnly End With With Selection .Offset(-1, -1).Resize(.Rows.Count + 1, .Columns.Count + 1).Copy End With Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlValues Application.CutCopyMode = False End Sub
あらぁ、、今、名前を見て思ったけど、お姫様だったのね(^^;;; ころっと態度が変わるSoulまんちゃんv(=∩_∩=)v このパターンの中にどれか気に入ったのがあるでしょう?? ないかな??( ̄□ ̄;)!! (SoulMan) http://ryusendo.no-ip.com/cgi-bin/upload/src/up0134.xls Sub てすと() Dim MyRow As Long Dim MyCol As Long With Worksheets("sheet4") .Select .Range("A3").Select .PivotTables("ピボットテーブル1").PivotSelect "", xlDataOnly End With With Selection MyRow = .Rows.Count + 2 MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1) .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Application.CutCopyMode = False End Sub 罫線もあった方がいいのかな?? http://ryusendo.no-ip.com/cgi-bin/upload/src/up0136.xls
わかった(-_☆)きらり こうじゃない??もしかしてぇ??? うん??違うかな?? (SoulMan) Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRow As Long Dim MyCol As Long If Target.Address <> "$H$1" Then Exit Sub Application.EnableEvents = False Application.ScreenUpdating = False With Worksheets("sheet4") .Select .Range("A3").Select With .PivotTables("ピボットテーブル1") .PivotFields("品名").CurrentPage = Target.Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 2 MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1) .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Me.Select Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True End Sub アップしたままだと少し変なので、保存してからお試しください。 http://ryusendo.no-ip.com/cgi-bin/upload/src/up0139.xls ちょっと、わかるとピボットって面白いねv(=∩_∩=)v Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim Wsh1 As Worksheet Dim MyRow As Long, MyCol As Long If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Application.ScreenUpdating = False Set Wsh1 = Worksheets("テーブル") Me.Range("A3").CurrentRegion.Clear With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotFields("品名").CurrentPage = Target.Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 2 MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Me.Range("A3") .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Me.Select Target.Select Me.Range("A3").CurrentRegion.Columns.AutoFit Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Set Wsh1 = Nothing End Sub アップしたままだと少し変なので、保存してからお試しください。 http://ryusendo.no-ip.com/cgi-bin/upload/src/up0141.xls
SoulManさん、ほんとにどうもありがと。Up139のワークブックがかなり私が作ろうと思っているものに近いです!(^^) あともう一声、って思わずいってしまいそうになったくらい近いし、そこまでのプロセスはほんとに同じです!つたない説明からサンプルまで、作っていただいてほんとに、ありがと。あと、一声の部分は、(まだ迷惑をおかけしょうとしてます!すみません) Sheet3のドロップダウンリストから値が選択し、あの緑色のマクロボタンを押すと、そのSheet上に、ドロップダウンリストがあらわれるようにしたいんです。もうすこし、一緒に考えていただけないでしょうか?
Up141のワークブックの抽出とゆうシートなんですが、たとえば、セルA12に、別のデータが、はいっているとしたら、”すべて”を選んだとたんに、そのセルは、ピボットテーブルのために使われてしまい、既存のデータは、削除されてしまうということが、おきてしまいました。Y(>_<、)Y この場合の対策さえできれば、Up141は、いい方法だと、思います!よろしくおねがいします。 ほんとに、少しでも、楽しんでいただければ、幸いですがご迷惑ばかりでしたら、ほんとに、ごめんなさい。
>セルA12に、別のデータが、はいっているとしたら で、どうしたいの? v(=∩_∩=)v (SoulMan)
抽出先もクリアーにしなくちゃいけないし、12行目は残したいのかな? 抽出されたデータの数が9よりも多かったら、インサートそうでなければ何もしない。 ただし、A3から11行目までとデータの幅はいつもクリアーにします。 これで、いいかな?v(=∩_∩=)v (SoulMan) Private Sub Worksheet_Change(ByVal Target As Range) Dim Wsh1 As Worksheet Dim MyRow As Long, MyCol As Long If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Application.ScreenUpdating = False Set Wsh1 = Worksheets("テーブル") With Me.Range("A3") .Resize(9, .CurrentRegion.Columns.Count).Clear End With With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotFields("品名").CurrentPage = Target.Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 2 If MyRow > 9 Then Me.Rows("12:12").Insert Shift:=xlDown End If MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Me.Range("A3") .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Me.Select Target.Select Me.Range("A3").CurrentRegion.Columns.AutoFit Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Set Wsh1 = Nothing End Sub すみません。思いっきり間違えたぁ_/ ̄‖○ ごめんちゃいm(__)m 2004/11/07 22:22
要求度がかなりわがままでごめんなさい、、。 実はこのシートを利用する人は、かなり年をいっておられる方で、年代的にPCに弱い方々になんです。けれども、一度そのシートができあがれば、簡単に必要な情報がマクロボタンの一押しと、プリントボタンを押すだけで、ハードコピーが手に入るとゆう、ちょっとした強い見方になってもらえるようなシートになるだろうって信じていて、そんなシートを作りたいんです。 もうすこしだけ、力を貸してください。と、ここまで、書いていたら、SoulManさんのレスが、入った模様、、、。チェックしてみようとおもいます!どうもありがとうございます
SoulManさん、サンプルをリンクさせていただいてもいいですか?ほんとにVBAは、初心者で、コマンドから理論的に理解するのは、1行ぐらいとゆう不束者です。よろしくおねがいします。
お姫様には、弱い(^_^; あははは… アップしたままだと少し変なので、保存してからお試しください。 http://ryusendo.no-ip.com/cgi-bin/upload/src/up0142.xls v(=∩_∩=)v (SoulMan)
(「・・)どれどれ..うん?今、DLしたけど、普通にうごくべ ツール→マクロ→セキュリティをチェックしてみて それか、 Application.EnableEvents = True は可能性が低いしなぁ、、、 あっ、有効にして開いてる?? 最初のコードを間違ったからね。PCを再起動してみる?? まぁ、落ち着いてやったら動くよ。。。多分 だいじょうびv(=∩_∩=)v (SoulMan)
>GrandTotal ってなんだべ?? v(=∩_∩=)v (SoulMan)
σ(^◇^;)のはExcel2000だけど、ないように思うけど???? よくわかんない。・゚゚・(>_<)・゚゚・。 なんせ今日はじめてやったもんなんで( ̄□ ̄;)!! (SoulMan)
With Me.Range("A3") .Resize(9, .CurrentRegion.Columns.Count).Clear ↑この9が範囲が変わったときに対応してないので、クリアされている範囲が足りないみたい。
With Me.Range("A3") .Resize(.End(xlDown).Row - 2, .CurrentRegion.Columns.Count).Clear
これでいけるかな。 (川野鮎太郎)
上記はよく読んだら勘違いでした_/ ̄|○ il||li ※要するにManちゃんのサンプルで言うテーブルシートの10行目以下に別のデータがある場合に、 上書きされないようにってことだと判断しました。
少しベタな方法になってしまいましたが、こうかな?(^_^A; Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim Wsh1 As Worksheet, Wsh2 As Worksheet Dim MyRow As Long, MyDataRow As Long, MyCol As Long Dim MyRow1 As Long, MyRow2 As Long If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Application.ScreenUpdating = False Set Wsh2 = Worksheets("データ") With Wsh2 MyDataRow = .Range("A1").CurrentRegion.Rows.Count End With Set Wsh1 = Worksheets("テーブル") With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotSelect "", xlDataOnly End With MyRow1 = Selection.Rows.Count .Rows(MyRow1 + 5 & ":" & MyRow1 + 5 + MyDataRow).Insert Shift:=xlDown End With With Me.Range("A3") .Resize(.End(xlDown).Row - 2, .CurrentRegion.Columns.Count).Clear End With With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotFields("品名").CurrentPage = Target.Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 2 ' If MyRow > 9 Then ' Me.Rows("12:12").Insert Shift:=xlDown ' End If MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Me.Range("A3") .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Me.Select Target.Select Me.Range("A3").CurrentRegion.Columns.AutoFit With Wsh1 MyRow2 = .Range("A3").CurrentRegion.Rows.Count .Rows(MyRow2 + 3 & ":" & MyRow2 + 3 + MyDataRow - (MyRow2 - MyRow1) + 2).Delete Shift:=xlUp End With Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Set Wsh1 = Nothing Set Wsh2 = Nothing End Sub
※抽出先シートの下方にもデータがある場合は、もう少し追加が必要かな・・・。
(川野鮎太郎)
おはぁよ なぁ〜〜んだ、、そうゆうことかぁ、、じゃこれでいいんじゃないの? Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim Wsh1 As Worksheet Dim MyRow As Long, MyCol As Long If Target.Address <> "$A$1" Then Exit Sub Application.EnableEvents = False Application.ScreenUpdating = False Set Wsh1 = Worksheets("テーブル") With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotFields("品名").CurrentPage = Target.Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 2 If Not IsEmpty(Me.Range("A3").Value) Then Me.Rows("3:" & MyRow + 3).Insert Shift:=xlDown End If MyCol = .Columns.Count + 1 .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Me.Range("A3") .PasteSpecial Paste:=xlValues With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Me.Select Target.Select Me.Range("A3").CurrentRegion.EntireColumn.AutoFit Application.CutCopyMode = False Application.ScreenUpdating = True Application.EnableEvents = True Set Wsh1 = Nothing End Sub アップしたままだと少し変なので、保存してからお試しください。 http://ryusendo.no-ip.com/cgi-bin/upload/src/up0144.xls ところで、そのデータを選択するところがあるじゃん? σ(^◇^;)は入力規則を使ってるけど、それを抽出先のシートに表示させることって できるのかぁ??どうもトピ主さんのはそんな風になってる様な気がするんだけど、、 ピボットは使ったことがないから、機能そのものがよくわからない。・゚゚・(>_<)・゚゚・。 v(=∩_∩=)v (SoulMan)
意味が伝わってないな(ノ_・。) テーブルシートのA10に川野鮎太郎って入れてから、全てで抽出してみて_/ ̄|○ il||li (川野鮎太郎)
うぅ〜〜ん、今一よくわからないんだけど、、 なんでテーブルの下に川野鮎太郎って入れるわけ??? テーブルシートはテーブルシートで独立させてたらいいんじゃないの??? うぅ〜〜〜ん、、まだ、よくわかってないな(;>_<;)びぇぇぇぇん v(=∩_∩=)v (SoulMan)
それはそうだけど・・・。 質問者のお姫様がおっしゃってますので・・・(^_^A; というより、ピボットで集計したデータの下にデータを加えて、全体のシートを作るってこともあるんじゃないかな。 (川野鮎太郎)
なぁ〜〜るほどぉ、そうゆことかぁ、、 でもそれは、別シートにコピーすることとは関係ないんじゃないの?? もともと、そうゆことなんじゃないの?? あっ!コピーするから、 >GrandTotal ってのが出るのかなぁ???そんなもんないけどなぁ??? 鮎ちゃんのは、そんなの・・ある?? >GrandTotal ってやつ??? ようわからん、、ちょっとむずいね(^_^; あはははは… v(=∩_∩=)v (SoulMan)
GrandTotal=総計 前の0142のファイルの場合に、総計が何行も追加されていってたでしょ。 多分そのことだと思う。 んで、本来は抽出シートには、選んだ項目の一覧だけ出れば良いんじゃないのかな?
ということは、抽出シートは何で必要なの???って疑問に思ったことで気づいたんだけど、 もしかしたら・・・、本当はテーブルシートだけで良いのだけど、 テーブルシートのA10以下にデータが入っていて、項目を選択した時点で、セルを削除しますか?って聞いてくるので、 いいえを選択では、抽出できないし、はいにすると下のデータが削除されるからってことかな・・・。 (あくまで想像で書いてます(^_^A;) (川野鮎太郎)
こんにちは。 忙しくて口出しはできませんが、up139が近いといっているんだから どんどん追加(挿入)されていくものがいいのでしょう。
>Sheet3のドロップダウンリストから値が選択し、 >あの緑色のマクロボタンを押すと、そのSheet上に、 >ドロップダウンリストがあらわれるようにしたいんです。
ただ、間違って選択したときに直すのが大変なので、 『あの緑色のマクロボタン』(吹き出しのこと?)を押したタイミングで挿入と したいのでは?
ドロップで選択 ↓ 緑ボタンで追加 ↓ ドロップで選択 ↓ 緑ボタンで追加
ことばのニュアンス的には、その都度新しいドロップダウンリストを 出したいみたいだけど...
そして総計の部分はいらないんでしょ、多分。
(ramrun)と、私は解釈しました。
わかった。v(=∩_∩=)v チェンジイベントじゃなくて好きな時に実行 GrandTotal=総計 は不要 でもって、下にどんどん追加していく じゃないの??? はじめから、そう言ってくれりゃいいのにぃ、、って、そう言ってるじゃんってかぁ( ̄□ ̄;)!! これで、怪傑!解決丸ざんしょ??お姫様? v(=∩_∩=)v (SoulMan) Option Explicit Sub てすと() Dim Wsh1 As Worksheet, Wsh2 As Worksheet Dim MyRow As Long, MyCol As Long Application.ScreenUpdating = False Set Wsh1 = Worksheets("テーブル") Set Wsh2 = Worksheets("抽出先") With Wsh1 .Select .Range("A3").Select With .PivotTables("ピボットテーブル3") .PivotFields("品名").CurrentPage = Wsh2.Range("A1").Value .PivotSelect "", xlDataOnly End With End With With Selection MyRow = .Rows.Count + 1 MyCol = .Columns.Count .Offset(-2, -1).Resize(MyRow, MyCol).Copy End With With Wsh2.Range("A65536").End(xlUp).Offset(2) .PasteSpecial xlPasteValues .CurrentRegion.EntireColumn.AutoFit With .Resize(MyRow, MyCol) .BorderAround LineStyle:=xlContinuous, Weight:=xlThin With .Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin End With With .Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With Wsh2.Select Wsh2.Range("A1").Select Application.CutCopyMode = False Application.ScreenUpdating = True Set Wsh1 = Nothing Set Wsh2 = Nothing End Sub アップしたままだと少し変なので、保存してからお試しください。 http://ryusendo.no-ip.com/cgi-bin/upload/src/up0145.xls
元の質問のままで考えたらこうなんだろうか・・・。 私は追加ではなく変更で考えました。 http://skyblue123.hp.infoseek.co.jp/Excel/Hime.xls ダウンロードして試してください。 (川野鮎太郎)
さすがぁ、、姫のはぁーと・‥…・・・★!! をげっちゅうしましたね(-_☆)キラリンコ・・正解でしょう? いや、どれか正解があるでしょう?? v(=∩_∩=)v (SoulMan)
( ^-^)ノ(* ^-^)ノこんばんわぁ♪ 川野さんにまで、サンプルを作っていただきましたっ!ほんとにどうもありがとうございます。今、私が作成しようとしているワークブックに、最も近い物は、実際、SoulManさんがつくってくれたサンプルのような 3つのシートの構成です。(サマリーシート、データ、ピボットテーブル、このワークブックを使ってくれるおばちゃんやおじちゃんは、まずサマリーシートにいって、ドロップダウンリストから、検索したい値を選択します。そして、マクロボタンを押すと、そのシートにデータが集まる!だから、データと、ピボットテーブルシートは、実際、誰もみる必要はないんです。)川野さんのサンプルシートは、ピボットの元のデータシートに、ドロップダウンリストをはめ込まれてますが、マクロの作り方次第で、私の既存のシートを変更することなく、”使えそう〜これもいい〜!って、思いました。(*^。^*)
川野さん、もうひとつだけ、大変ご迷惑なおねがいがあるんですけど、きいていただけますか? 川野さんに、書いていただいたVBAのコマンド1行1行に、何をしているのかその行の下でもいいし、横でもいいので、簡単な説明おねがいできますか?そこから、応用範囲を、自分なりに広げて、既存のワークシートの構成をいかしたいなって。Dim Wsh1 As Worksheet, Wsh2 As Worksheet このコマンドにもつまづいてしまいました。(_ _。)・・・しゅん。何をしてくれてるんだろ〜?こんな、私でほんとに、ご迷惑ばかり、ごめんなさい。 よろしくおねがいします。
PS SoulManさん、まだ、もすこしだけ、私のシートを完成するまでには時間がかかりそうです。ぜひぜひ、今後もご指導ください。川野さんには、とっても、感謝してますし、同じように、SoulManさんに、感謝します。 ここまで辿りつけたのも、SoulManさんのいくつかのサンプルシートのおかげだとも思ってます。ほんとに、どうもありがとうございます。
( ^-^)ノ(* ^-^)ノこんばんわぁ♪ 川野さん、無理なお願いをして、ほんとにすみませんでした。少しずつですが、自分なりに学習していこうとおもいます。ただ、これまで、ご指導いただいた、川野さんや、Hatchさん、SoulManさん、このサイトの管理者のKazuさん、みなさんに、ほんとに感謝していて、心から、お礼がいいたいです。ほんとにどうもありがとうございました。
こんばんは。 一応私の分のコードの説明を付け加えておきました。 ご覧になる場合は、再度ダウンロードして確認してください。 あんまり詳しく見ちゃ(*/∇\*)キャ (川野鮎太郎)
川野さん、ほんとにどうもありがとうございます。=*^-^*=にこっ♪ かなり、わがままなおねがいをしてしまったと、反省したいたところでしたので、うれしさ倍増です 知識だけじゃなくて、やる気もみなさんから、いただいてます。どうもありがとうございます。p(*^-^*)q がんばります♪
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.