エクセル2007で作成したマクロのファイルxslxを他のpcで使うため
2003のファイルxslに変更して使うようにしましたが、ピボットテーブルのマクロでエラーとなりました
実行時エラー’1004’PivotTableクラスのRefreshTableメソッドが失敗しました。 の表示で デッバグの内容で黄色表示が 次の内容でした ActiveSheet.PivotTables("ピボットテーブル1").RefreshTable
解決策を教えてください  使用しているPCはどちらもXPです

A 回答 (1件)

こんにちは。



> ActiveSheet.PivotTables("ピボットテーブル1").RefreshTable
アクティブシートにピボットテーブルがあるか?
アクティブシートにあるピボットテーブルの名前が "ピボットテーブル1" なのか?
確認してみては如何でしょうか?

作成するワークシートの名前が "XXXXX" と決まっているなら
WorkSheets("XXXXX").PivotTables("ピボットテーブル1").RefreshTable
と書けます。
また、そのシートに作成するピボットテーブルが一つだけなら
ActiveSheet.PivotTables(1).RefreshTable
という書き方もできます。
    • good
    • 0
この回答へのお礼

お世話掛けました
2007にUPして対応しました

お礼日時:2009/04/24 12:05

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル(マクロ記録)

よろしくお願いします。
エクセルで、印刷マクロを作ろうと考えています。
             (基本、入門者です)
マクロ記録で、作っていますが、
記録終了するたびに「 印刷 」がかかっては、
用紙が何枚あっても足りません。

いい考えがありましたら、お教えください。
お願いします。

Aベストアンサー

#3の回答者です。

>出来たら、この i=1 の意味を教えていただけませんでしょうか?
単に、それはページ数です。

ヘルプを引用します。(PrintOut で調べました)

式.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)

From オプション 印刷を開始するページの番号を指定します。この引数を省略すると、最初のページから印刷します。
To オプション 印刷を終了するページの番号を指定します。この引数を省略すると、最後のページまで印刷します。

と出てきます。

QVBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義がまずいと思うのですが、それ以上の事は分かりません。どなたか、分かる方がおりましたら、よろしくお願いします。また、プログラムは以下のようになります。

Sub 繰り返し()
'繰り返し
Dim s As Integer
For s = 0 To 17
Range("cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)").Select
Range("cells(8,s+2)").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("20081216_210647").Range( _
"cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""0810p2x"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="0810p2x"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "0810p2x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "t"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next
End Sub

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義...続きを読む

Aベストアンサー

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな(Excelで表示されている)シートが上位オブジェクトとして、自動的に認識されます。

≪例2≫
Sheets("Sheet2").Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、Rangeのみシート名が記述されています。
Sheets("Sheet2").Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
Activeなシートが、Sheet2の場合はエラーになりません。
しかし、ActiveなシートがSheet2以外の場合、エラーが発生します。
直前に、
Sheets("Sheet1").Select
などとしていれば、ActiveシートがSheet1になっていますから、エラーになります。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(8, 1), Sheets("Sheet2").Cells(1587, 2)).Select
と書いておけば安心です。
Withステートメントを使えばスッキリ纏めることができます。
With Sheets("Sheet2")
  .Range(.Cells(8, 1), .Cells(1587, 2)).Select
End With

# Sheets("Sheet2")の上位オブジェクトが省略されていることにも気がついてください。

>そこで自分で基礎を勉強したいのですが推薦できる参考書などがござ
>いましたら、教えていただけませんか?
私自身は、入門書程度の雑誌を1冊買っただけです。どれが良いとかはよく分かりません。
「マクロの記録」を活用して、参考コードを取得し、汎用性のあるコードに編集しています。
新しい単語があれば、文字カーソルを単語の上に置き、F1キーを押してVBAのヘルプを必ず見るようにしています。
躓いた時は、Web検索して欲しい情報を得たり、あるいは、こうした掲示板で先輩方のお力をお借りしています。

Excel(エクセル)VBA入門:目次
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=4651404
エクセル入門・初級編
http://www.kenzo30.com/excel_kiso.htm

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな...続きを読む

Qエクセル マクロコードの記述の勉強

独学でエクセルでのマクロのコード記述ができるようになりたいのですが、コードがかける人はどのようにしてかけるようになったのでしょうか?

プログラミング関係にはまったくの初心者なので、入門本を立ち読み程度読んでみたのですが、「面白そうだが、かなり手強そう」というような印象でした。

現実的な問題として、実際にコードをかける人は、プログラミング関係の学校等で学んだ人ぐらいしかいないのでしょうか?

めざすレベルはエクセルでこうしたいと考えたものを調べながらコードをかける程度のレベルです。

Aベストアンサー

> 実際にコードをかける人は、プログラミング関係の
> 学校等で学んだ人ぐらいしかいないのでしょうか?

そんな事ないです。私も独学で覚えましたから。

エクセルはマクロ記録がありますので、実際の操作を記録して書かれたコードを追っていったり、書き直したり出来ます。
VisualBasicEditor画面でコードにカーソルを置き、F1キーを押すとVBAヘルプ(たしか標準ではインストールされないので追加インストールの必要がある)が開くので、意味を調べたり、サンプルコードを見たりして覚えて行きました。
ネットにも沢山サンプルがありますし。

変数の使い方とforやif等を覚えてマクロ記録を直すだけでも結構便利になります。

Q【Excel】ピボットテーブルで他のピボットテーブルの値を参照する方法

Excelのピボットテーブルについての質問です。

ピボットテーブルでは、リレーションシップの設定をして、複数のテーブルを参照できますが、
他のピボットテーブルの値を参照することは出来ないのでしょうか。

用途としては、料理毎の食材費をまとめようとしています。
第一のピボットテーブルで食材の費用の平均を出し、
第二のピボットテーブルで使用する食材の平均を合計し、
料理毎の費用を算出しようと思っています。

複数のピボットテーブルを使用すること自体にこだわっているわけではないので、
上記の集計をする別の方法がありましたら、それでも構いませんので、
教えていただけないでしょうか。

Aベストアンサー

ピボットテーブルのデータを取り出すことはできます
GETPIVOTDATA関数を使います。
たぶん、適当なあいているセルに = を書いて
ピボットテーブル内のデータフィールドをクリックすればできていると思います
参考まで

Qエクセルについているマクロが出てこない・・・

 エクセルをひらき、ツール→マクロ→マクロでマクロの作成ができると聞きましたが、私のエクセル2002ではマクロのその機能が空欄状態です。復帰や回復できる方法を教えて下さい。

Aベストアンサー

(1)自分でマクロの記録を採る。
    ツールーマクロー新しいマクロの記録
(2)または他人がマクロの記録をとった。
   (3)他人がVBAコード(プログラム)を組んだ
    ツールーマクローVBEープログラム作成
場合に出てくる。(1)(2)(3)ともやっていないから、出てこないのは当然。
(1)なぞはマクロの画面でマクロー編集でコードが見れます。
ーーー
本でもWEBでも、マクロに関する本1冊か、「エクセル マクロ」でWEB照会して、勉強し。予備知識をえるべきです。

QVBA マクロ エラー1004 アプリケーション定義またはオブジェクト定義のエラー

VBAで正当表と入力表の正誤判定を一気に行いたいのですが
If Cells(a, b).Value = Cells(c, d).Value Thenの部分で
エラー1004、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
エラーの対処の仕方を調べたのですがわかりませんでした。
教えていただけるとありがたいです。

以下作ったプログラムです。

Sub 正誤判定()

Dim a
Dim b
Dim c
Dim d
Dim e
Dim i
Dim j
Dim x
Dim y
Dim hokan
Dim ytate
Dim xyoko

a = 3
b = 21
c = 3
d = 43
e = 2
i = 1
j = 1


Do While j < 261

Do While i < 11

If Cells(a, b).Value = Cells(c, d).Value Then
a = a + 1
c = c + 1


If Cells(a, b) = Cells(c, d) Then
hokan = Cells(e, b).Value
ytate = Range("B2:S15").Find(hokan, lookat:=xwhole).Row + 15
xyoko = Range("B2:S15").Find(hokan, lookat:=xwhole).Column
Cells(ytate, xyoko).Value = Cells(ytate, xyoko).Value + 1

Else

End If

Else

End If
a = a - 1
c = c - 1
b = b + 1
d = d + 2
i = i + 1

Loop
a = a + 3
c = c + 3
e = e + 3
j = j + 1

Loop

End Sub

VBAで正当表と入力表の正誤判定を一気に行いたいのですが
If Cells(a, b).Value = Cells(c, d).Value Thenの部分で
エラー1004、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
エラーの対処の仕方を調べたのですがわかりませんでした。
教えていただけるとありがたいです。

以下作ったプログラムです。

Sub 正誤判定()

Dim a
Dim b
Dim c
Dim d
Dim e
Dim i
Dim j
Dim x
Dim y
Dim hokan
Dim ytate
Dim xyoko

a = 3
b = 21
c = 3
d = 43
e = 2
i = 1
j...続きを読む

Aベストアンサー

質問者ののマナーとして、こんなの回答者に読ませて、処理内容を割り出させるのでなく、どのセル範囲とどのセル範囲をくらべて、どういうロジック(3行おきとか)でどう比較してとかを、文章で判りやすく解説したものを載せるべきだ。解読時間がかかってしょうがない。
それに行数・列数を少なくしたモデル例を作って、そのコードで質問すべきだ。回答者でテスト実例を作ろうにも列・行が多いと作っていられない。
回答者は質問者の職場などでの義務付けられ教育役ではないから、それぐらい質問者ですべきだ。
ーー
コード作成スキルとして
少し読み解くと変数を乱発しすぎだと思う。そのため解読が難しい。
列と行を表すi,j2つだけで2重ループで繰り回しできそうに思う。
それに1行下を見るときIf Cells(a + 1, b) =で良いのに、一旦足して、処理後1引いてもとへ戻すなど複雑になるばかりだ。
>b = b + 1
d = d + 2
はなぜ不統一なのか理解できなかった。
ーー
#1のご回答でOKならもう良いが、でなければ
(1)Range("B2:S15")
(2)U3-AP(?)XX ?? 22列?
(3)AQ3-BL(?) XX ?? 22列?
3行ごとにまとめて考えて、第1行が等しく、かつ第2行が等しければ、第1行の語句で、Range("B2:S15").を探し、直下行と等しいかチェック。
など文章で読者に教えてよ。
ーー
私が短くしようとしてやった結果。途中で放棄したので動かないだろうが、コードについて、私の言い分に耳を傾ける気があるなら参考にしてください。
コードをすっきりさせれば、自ずとエラー原因は判る、エラーは無くなると思う。
Sub test01()
'--初期化
'--U3
a = 3 'cells(a,b)
b = 21
'---AQ3
c = 3 'cells(c,d)
d = 43
'--
For j = 3 To 260 Step 3
For i = 1 To 10 Step 2

If Cells(a, b).Value = Cells(a, b + 22).Value Then


'1行下行を見る
If Cells(a + 1, b) = Cells(a + 1, b + 22) Then
'下行も等しければ、
hokan = Cells(a, b).Value
ytate = Range("B2:S15").Find(hokan, lookat:=xwhole).Row + 15
xyoko = Range("B2:S15").Find(hokan, lookat:=xwhole).Column
Cells(ytate, xyoko).Value = Cells(ytate, xyoko).Value + 1
Else
End If

Else
End If


b = b + 1 ' ???
d = d + 2 ' ???


Next i
'--
Next j
End Sub

質問者ののマナーとして、こんなの回答者に読ませて、処理内容を割り出させるのでなく、どのセル範囲とどのセル範囲をくらべて、どういうロジック(3行おきとか)でどう比較してとかを、文章で判りやすく解説したものを載せるべきだ。解読時間がかかってしょうがない。
それに行数・列数を少なくしたモデル例を作って、そのコードで質問すべきだ。回答者でテスト実例を作ろうにも列・行が多いと作っていられない。
回答者は質問者の職場などでの義務付けられ教育役ではないから、それぐらい質問者ですべきだ。
...続きを読む

Qエクセル2010で作成したマクロ

エクセル2010で作成したマクロブックがあります。
このエクセルを知人にメールで送りました。

知人のエクセルは2007です。
マクロブックのフォームボタンを押しても何も動作しない状況との事です。

エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

素人の質問で申し訳ありませんが、ご指導お願いいたします。

Aベストアンサー

>エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

ご相談の状況からすると、まずそういう事はありません。
まぁ2010でしか動かない内容であなたがマクロを作成した可能性は確かにありますが、その場合でも「何も動作しない」という事はありません。ふつーにエラーが出て止まります。



一応あなたの側で確認しておくべきポイントとしては、
○間違ったブックを送っていないか再確認する
 ・ちゃんとマクロを付けたブックを送ったか確認する
 ・名前を付けて保存でファイルの形式をマクロ有効ブックにして保存したのを送ったか再確認する
といったところをよく確認してください


先方に対してあなたが確認すべきポイントとしては、
○「何も起こらない」とは、具体的にどんな状況なのか再確認する
 ・ホントにうんともすんとも反応が無いということなのか
 ・実は何かエラーメッセージっぽいダイアログが現れて、OKをクリックしてもマクロが動作した様子が無いとかの状況では無かったか



具体的な状況が明らかになったら、ようやく対処を検討する事ができるようになります。
●そもそもどういうマクロを作成したのか、ご自分の作成したマクロをよく確認して、「反応が現れない」マクロを書いてたんじゃないのか再確認する
 たとえば無意味にon error resume nextのような仕込みをしてたりしないか
 たとえば不適切なデータに対して何も作動せずに終わってしまうようなそもそも作りにしてたんじゃないか
 とか。

●実は何かダイアログが出てたのなら、具体的にどんなダイアログなのか正確に聞き取って、あなたの方で対処を考える
 「マクロが無効になってる」のなら、マクロを有効にして実行するように伝える
 とか。

>エクセル2010で作成したマクロブックはエクセル2007と互換性がないのでしょうか?

ご相談の状況からすると、まずそういう事はありません。
まぁ2010でしか動かない内容であなたがマクロを作成した可能性は確かにありますが、その場合でも「何も動作しない」という事はありません。ふつーにエラーが出て止まります。



一応あなたの側で確認しておくべきポイントとしては、
○間違ったブックを送っていないか再確認する
 ・ちゃんとマクロを付けたブックを送ったか確認する
 ・名前を付けて保存でファイル...続きを読む

Qピボットテーブルのマクロについて

ピボットテーブルのマクロについて教えてください。

NO 場所  ランク 面積
1  東京  上   10
2  大阪  上   20
3  福岡  中   20
4  広島  中   30
5  東京  中   15
6  東京  中   25
7  大阪  下   35
8  福岡  下   45
9  大阪  下   10
10 大阪  下   10

という表があり、
場所ごとランクごとの面積集計を
ピボットテーブルのマクロを組んで実施したい
のですが(同じ作業を繰り返すので)、
マクロを記録して、内容を実行しようとすると、
「実行時エラー」が出てしまいます。

記録したマクロは以下の通りです。
( → ←のところでエラーが出ます)

Sub Macro1()
 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
  "Sheet1!C2:C4").CreatePivotTable TableDestination:="", TableName:= _
 "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10
 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
 ActiveSheet.Cells(3, 1).Select
→ With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("場所")   ←
  .Orientation = xlRowField
  .Position = 1
 End With
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ランク")
   .Orientation = xlRowField
   .Position = 2
 End With
 ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _
   "ピボットテーブル2").PivotFields("面積"), "データの個数 / 面積", xlCount
 Range("A3").Select
 ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("データの個数 / 面積
").Function = _
 xlSum
End Sub


ピボットテーブルのフィールドリストがうまく挙がってこないようなのですが、
どのようにマクロを組み直せば、よいのでしょうか?


作りたい集計表は、以下のようなものです。

場所 ランク  合計
広島  中   30
 集計     30
大阪  下   55
    上   20
 集計     75
東京  上   10
    中   40
 集計     50
福岡  下   45
    中   20
 集計     65
総計     220

長々とまた見づらくてすみません。
よろしくお願いします。

ピボットテーブルのマクロについて教えてください。

NO 場所  ランク 面積
1  東京  上   10
2  大阪  上   20
3  福岡  中   20
4  広島  中   30
5  東京  中   15
6  東京  中   25
7  大阪  下   35
8  福岡  下   45
9  大阪  下   10
10 大阪  下   10

という表があり、
場所ごとランクごとの面積集計を
ピボットテーブルのマクロを組んで実施したい
のですが(同じ作業を繰り返すので)、
マク...続きを読む

Aベストアンサー

こんにちは。
>...SourceData:= "Sheet1!C2:C4"
このC2:C4が問題ですネ。
多分 B:D の列全体を選択してマクロ記録を録られたのでしょう。
ピボットのマクロ記録の場合、アドレス参照形式はR1C1形式になります。

困った事に、これをそのまま実行しようとすると、
今度は C2:C4 をそのままA1形式のセル範囲と認識してしまいます。
ピボットを作成したい元データ範囲が変わってしまいます。

シート全範囲、列範囲を選択してのマクロ記録は気をつけたほうが良いです。

そこで、以下のようなコードに変更してみてください。
Sub sample()
  Dim r As Range

  With ActiveWorkbook
    Set r = .Sheets("Sheet1").Range("A1").CurrentRegion
    With .PivotCaches.Add(SourceType:=xlDatabase, _
               SourceData:=r.Address(external:=True) _
               ).CreatePivotTable(TableDestination:="")
      .AddFields RowFields:=Array("場所", "ランク")
      With .PivotFields("面積")
        .Orientation = xlDataField
        .Caption = "面積計"
        .Function = xlSum
      End With
    End With
  End With
  Set r = Nothing
End Sub

QNo.2926805 や QNo.2097393 も参考にしてみてください。

こんにちは。
>...SourceData:= "Sheet1!C2:C4"
このC2:C4が問題ですネ。
多分 B:D の列全体を選択してマクロ記録を録られたのでしょう。
ピボットのマクロ記録の場合、アドレス参照形式はR1C1形式になります。

困った事に、これをそのまま実行しようとすると、
今度は C2:C4 をそのままA1形式のセル範囲と認識してしまいます。
ピボットを作成したい元データ範囲が変わってしまいます。

シート全範囲、列範囲を選択してのマクロ記録は気をつけたほうが良いです。

そこで、以下のようなコードに変...続きを読む

Qエクセルで作成したマクロが他のシートに反映しない

必要に迫られ始めてマクロをエクセル上で作成してみました。(初心者)
そのマクロを違うエクセルファイル上でも反映させたいのですが
マクロを作ったおおもと(最初)のファイルを閉じてしまうと違うエクセルファイルを開いてもマクロが反映されていません。
マクロでの命令内容としては 
エクセル上の数字の羅列→グラフ作成→上書き保存 という手順で作りました。
他のエクセルファイルも同じように数字の羅列があります。それを同じ作業(グラフ作成→上書き保存)したいのです。
一度作ったマクロを他のエクセルファイルにも反映させるにはどうしたら良いのでしょうか?
説明がわかりにくくてすみません。
よろしくお願いします。

Aベストアンサー

マクロの記録先を「個人用マクロブック」にするのが良いと思います。
一回マクロの記録を行い「保存先」を「個人用マクロブック」にします。するとPERSONAL.XLSという特別なブックが作成されます。

このブックの標準モジュールシートに先に作ったマクロを貼り付けてください。

そうすればエクセルを開くと、どのブックでもマクロが実行可能になります

Qピボットテーブルの集計方法の変更をマクロで

こんにちは。長文ですみません。
ピボットテーブルを使って、データ集計をしています。
記録でできるかと思ってマクロ登録してみたのですが、エラーになります。

元のエクセルデータは、
A (資格)  B(データ(1)) C(データ(2))
  医師    4.3     6.2 
  栄養士   3.5     7.8
  看護師   2.9     5.7
  医師    5.0     3.5
   ・     ・     ・
   ・     ・     ・
   ・     ・     ・
という感じで700件程度入っていて、各資格のそれぞれのデータについての平均点を出していっています。

     データ(1)の平均  データ(2)の平均
医師     4.8       4.9
栄養士    3.5       7.8

といった感じです。


ピボットの行フィールドに「資格」、列フィールドには何も入れず、
データアイテムにそれぞれのデータを入れて、別シートにコピペしていっているのですが、
毎回データを入れ直すたびに集計方法がデータの個数になって、平均に変更するのが面倒なので、マクロでパッと変換する方法はありますか?

実際は行フィールドに入れる項目が10個くらいあるので、全て1つずつしなくてはならず、本当に時間がかかってしまって…。

マクロはまだまだ初心者で分からないので、よろしくお願いします。

こんにちは。長文ですみません。
ピボットテーブルを使って、データ集計をしています。
記録でできるかと思ってマクロ登録してみたのですが、エラーになります。

元のエクセルデータは、
A (資格)  B(データ(1)) C(データ(2))
  医師    4.3     6.2 
  栄養士   3.5     7.8
  看護師   2.9     5.7
  医師    5.0     3.5
   ・     ・     ・
   ・     ・     ・
   ・     ・     ・
という感じで700...続きを読む

Aベストアンサー

> つまり、700のデータのうち、「医師」の資格を持っ
> ている人たちの、データ(1)の平均値、データ(2)の平
> 均値、というふうに出したいところなんです。

結果、ピボットテーブルで下記のように出したいなら出ます。

>      データ(1)の平均  データ(2)の平均
> 医師     4.8       4.9
> 栄養士    3.5       7.8

1.「A(資格)」を行エリアに、「B(データ(1))」、「C(データ(2))」を、データエリアに2つ入れます。そうすると、下記のようにピボットテーブルが作成されます。(10個ほど同じところに入れて、繋げていっても結構です。)

A(資格) データ 合計
医師 平均 / B(データ(1)) 4.650
平均 / C(データ(2)) 4.850
栄養士 平均 / B(データ(1)) 3.500
平均 / C(データ(2)) 7.800
看護師 平均 / B(データ(1)) 2.900
平均 / C(データ(2)) 5.700

2.「A(資格)」の隣に出来た灰色の「データ」と言うセルをドラックしたまま、その隣の「合計」の上に持っていってください。
そうすると、下記のようなピボットテーブルが出来上がります。
データ
A(資格) 平均 / B(データ(1)) 平均 / C(データ(2))
医師 4.650 4.850
栄養士 3.500 7.800
看護師 2.900 5.700

で、以上で出来上がりです。

これなら、フィールドの入れ替えの必要性がありません。

追伸
ピボットテーブルのマクロの方、調べてみてますが・・・、記録だと確かにエラーがコードレベルで見直し中です。

> つまり、700のデータのうち、「医師」の資格を持っ
> ている人たちの、データ(1)の平均値、データ(2)の平
> 均値、というふうに出したいところなんです。

結果、ピボットテーブルで下記のように出したいなら出ます。

>      データ(1)の平均  データ(2)の平均
> 医師     4.8       4.9
> 栄養士    3.5       7.8

1.「A(資格)」を行エリアに、「B(データ(1))」、「C(データ(2))」を、データエリアに2つ入れます。そうすると、下記のようにピボットテーブルが作...続きを読む


人気Q&Aランキング

おすすめ情報