[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルの結果をコピー???』(エクセル姫)
たとえば、データと名付けられたシートのセル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.