advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 78 for 表示形式 数値 通貨 (0.011 sec.)
表示形式 (6903), 数値 (16334), 通貨 (231)
[[20051121212931]]
#score: 11548
@digest: c2f869f7166b1983bcdac7187a887bea
@id: 18349
@mdate: 2005-11-23T01:05:24Z
@size: 11849
@type: text/plain
#keywords: pvfld (57279), ヴァ (20327), 決マ (19108), ァー (17874), pivotfields (15313), 理ca (13773), 額") (13524), pivottables (12292), 代奈 (11651), version (10021), 払金 (9478), xlsum (8320), ィー (8121), ピボ (7046), 奈) (5755), ルド (5723), 支払 (5693), トテ (5332), 収入 (5000), イテ (4275), ドア (4150), タフ (4143), ル1 (3916), 算方 (3385), テー (3374), ボッ (3125), ーブ (3082), flag (3067), 弥太 (2927), 金額 (2909), ジョ (2679), 分岐 (2613)
『ピボットテーブル作成時のフィールドの設定』(あまちゃん)
[ピボットテーブル作成時のフィールドの設定のVBAについて] いつもお世話になり、誠にありがとうございます。 ピボットテーブルをVBAで自動作成していますが、Exel2000とExel2003では コードがほんの少し違うところがあります、2003で作成したコードを2000で使うと 実行時エラー'1004': 「PivotTableクラスのPivotFieldsプロパティを取得出来ません」となり実行でき ません。良い解決策はないでしょうかどなたかご指導下さい。 表は年間の支払金額を縦軸に項目、横軸に月を取って、項目別月別の集計を ピボットテーブルを用いVBAで作っています。ピボットテーブルでは データのフィルド設定が最初は「データの合計金額」が表示されずに、「データの 個数」が表示されます。そのため、フィールドの設定で合計金額に変更しています。 その時のコードが 2003の場合: ActiveSheet.PivotTables("ピボットテーブル1").PivotFields ("デーの個数 / 支払金額").Function = xlSum 2000の場合:ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個 数 : 支払金額").Function = xlSum で / と:のところだけ違うためと思われます。 ピボットテーブル作成時に 「データの 合計」が優先で表示されるようにすことができないでしょうか、 そうすれば、 上記のコードは無しで行けます。さもなくば上記のコード を2003と2000とどちらでも使えるようにすることができないでしょうか? よろしくお願いいたします。 ---- Application.Version でヴァージョン情報は取得できるので、それぞれに応じた処理を 分岐させることは出来ると思います。(みやほりん) ---- みやほりん さん 早速ご指導ありがとうございます。 VBAはまだ初歩的なことしかできませんので、分岐させるコードを ご教授ください。これは簡単な小遣い帳で、年間集計を自動作成するもので 60歳台の知人に提供しようと思いますが、Excelのヴァージョンを聞かなくても 使用できれるようコード上で自動で分岐できれば幸いです。 よろしくお願いします。(あまちゃん) ---- 記録をとったところ、私の場合は、Excel2000でも2003でも ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 : 金額").Function = xlSum になりました。 2000も2003も MicrosoftVisualBasic 6.0 バージョンでした。 ご参考まで。 (代奈) ---- でも普通、金額だったら自動的に「合計」が選択されるはずですよね〜。。。 弥太郎さん、出番ですよ! (代奈) ---- えっ!、コホン、あのぅ・・・、モジモジ・・・ いや、ちょっと野暮用が・・・ ほとぼりが冷めた頃帰って来ます〜。(笑 代奈マイトさんにかかったらかなわんなぁ。(笑 (弥太郎) ---- 代奈さん、弥太郎さん お世話になりありがとうございます。 バージョンはExcel2003(11.5612.----)でコード("デーの個数 / 支払金額")と なり、: ではありません。(2005年1月発売のパソコン プリインストール) また、パソコンは、新旧3台あり、すべてデータが金額でも最初に「個数」が 表示されます。(ヴァージョンは3台とも違います)「合計」が最初に表示され る方法があるでしょうか?よろしくお願いします。(あまちゃん) ---- まず、集計フィールドでデフォルトで合計にならない原因として、 元となるデータの書式設定の表示形式が文字列になっている可能性 を指摘します。数値化する必要があるようです。 (1)もとのデータベースの数値として計算されるべきデータ範囲 の書式設定の表示形式を「標準」または「数値」に変更。 (2)未使用の入力のないセルをコピー。 (3)集計対象のデータ範囲を範囲選択、右クリックメニューから 「形式を選択して貼り付け」>「値」「加算」にチェックし て、OK。 とした上でピボットテーブルを作成してください。 フィールド名についてですが、XL2003SP1で確認したところ ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 / bbb").Function = xlSum と記録されるのを確認しました。2000をインストールしたマシンが 今手元にないので2000での確認はできていません。同じ2003でもSP ヴァージョンでの違いがあるかもしれません。 ヴァージョンの違いによりフィールド名が異なるとすれば、分岐せ ざるを得ないでしょう。分岐のステートメントサンプルは以下。 Select Case Application.Version Case Is = "9.0" Rem XL2000の時の処理 Case Is = "10.0" Rem XL2002の時の処理 Case Is = "11.0" Rem XL2003の時の処理 End Select なお、9.0、10.0・・・等のヴァージョン番号は念のため MsgBox Application.Version などを別個に実行するなどして実機で確認してください。 (みやほりん) ---- みやほりんさん、私のExcel2003のバージョンは 11.6xxx.xxxx です。 プリインストではないからでしょうけど、このような場合、 > Case Is = "11.0" > Rem XL2003の時の処理 だと逆にひっかかっちゃうんですよね? 本題から外れてごめんなさい。 (代奈) ---- みやほりんさん ご丁寧なご教授誠にありがとうございます。 急用で出かけますので、帰ってからトライします。 ノロマで時間がかかりそうですから 代奈さんもありがとうございます。(あまちゃん) ---- メニューのヘルプのヴァージョン情報ダイアログで表示される 11.xxxx.xxxx と Application.Version で取得できる情報は 同一ではないと認識しています。ちなみに私の使用機も 11.6xxx.xxxxとなっていますが、 Application.Version では 11.0が取得されます。 どんなヴァージョン番号が返るかはっきり把握していないため、 >なお、9.0、10.0・・・等のヴァージョン番号は念のため >MsgBox Application.Version >などを別個に実行するなどして実機で確認してください。 と、実際に確かめた上でコード作成してほしい、と言うことです。 一応ネット上で調べた限りでは9.4とか10.1とかってのはないよう ですが、自信はありません。 万が一想定外のヴァージョンでの処理を回避するなら Select Case Application.Version Case Is = "9.0" Rem XL2000の時の処理 Case Is = "10.0" Rem XL2002の時の処理 Case Is = "11.0" Rem XL2003の時の処理 Case Else MsgBox "想定外のExcelバージョンのため処理を中止します" Exit Sub End Select などのように回避ロジックを作成しておくと良いでしょう。 (みやほりん) ---- なるほど、取得してみたら 11.0 でした。 それでも ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 : 金額").Function = xlSum となるケースもあり →想定外 なのね。 了解。 (代奈) ---- ああ、そうか、代奈さんのでは2003でもフィールド名が 「"合計 : 金額"」 になるんでしたね。もしかしたら汎用にしようと思うとヴァージョンだけ調 べてもダメなのか。 でもまあ、とりあえず、表示に関係なく、元のデータフィールドが "金額"であるPivotFieldの計算方法を変更するには以下が適。 手動で変更されていても計算方法の変更ができます。 (前掲のヴァージョンによる分岐云々は忘れてください。) Dim PvFld As PivotField Dim Flag As Boolean Dim PvName As String Flag = False With ActiveSheet.PivotTables("ピボットテーブル1") For Each PvFld In .PivotFields If PvFld.Name = "金額" Then PvName = PvFld.Parent.DataLabelRange.Formula .PivotFields(PvName).Function = xlSum Flag = True End If Next PvFld End With If Flag = False Then MsgBox "有効なフィールドがありませんでした" Exit Sub End If ここまで書いていて今更ですが・・・・ 「集計フィールドでデフォルトで合計にならない原因」が解決すれば、 この相談の主題では、あまり問題ないのでは・・・。 (そもそもがSUMにしたいところがCOUNTになる、と言う問題なので、 SUMできていればフィールドの計算方法の変更は必要ない・・・?) (みやほりん) ---- な、なんかむずいです。 手持ちのデータで確認すると、 PvName = PvFld.Parent.DataLabelRange.Formula が黄色に反転。。。 こっ、これは何だ? むーん、先は長い(ーー;) >(そもそもがSUMにしたいところがCOUNTになる、と言う問題なので、 >SUMできていればフィールドの計算方法の変更は必要ない・・・?) それはそうなんですけどね(・・;) (代奈) 弥太郎さ〜ん、ほとぼり(?)冷めてますから出てきてくださ〜い ---- データフィールドが1アイテムのピボットテーブルでは問題なくできてました。 が・・・複数データフィールドアイテム表示状態ではご指摘のとおり(汗)。 ピボテの女王様のサンプルデータは抜かりがないらしい・・・。 なんだか泥縄の第4弾。 データフィールドの全アイテムを一旦非表示、必要なフィールドアイテム の計算方法とラベル表示を再設定。 Dim PvFld As PivotField Dim Flag As Boolean Flag = False With ActiveSheet.PivotTables("ピボットテーブル1") .DataPivotField.Orientation = xlHidden For Each PvFld In .PivotFields Select Case PvFld.Name Rem ↓この辺でフィールドアイテム選択、ラベル、計算方法設定 Rem サンプルは"金額", "売価"というフィールドを合計にする。 Case Is = "金額", "売価" .AddDataField .PivotFields(PvFld.Name), "合計 / " & PvFld.Name, xlSum Flag = True Case Else End Select Next PvFld If Flag = False Then MsgBox "有効なフィールドがありませんでした" Exit Sub End If End With (みやほりん)たぶんこれで打ち止め〜 ---- 明日は将棋大会がありますもんで、それに備えてトレーニングに励んでましたワ(笑 優勝したら結果を報告します。(でける訳無いやろバーカ!) だもんで只今から脳無い、いや、脳内エステに入ります。 ところで、この問題はなんでしたっけ? キョロキョロ・・・解決マークも付いとらんみたいやし・・・。 あまちゃんの代わりに解決マーク打っときまひょか?(笑 念のため申し上げときますけど私の得意分野は関数ですさかい、マクロもピボットなんとかいうんもからっきしあきまへんねん。(笑 (弥太郎) ---- みやほりんさん 返事が遅くなり誠に申し訳ございません。本当にご丁寧にご教授いただきありがとう ございます。 Select Case Application.Version Case Is = "9.0" Rem XL2000の時の処理 ・・・の場合が2003では上手く行きました。 データの書式設定の表示形式・・・・・の場合は1,2,3を実施しましたが、 なぜか私のパソコンでは、数値、標準でも個数が先に表示されます。データを通貨 にしても同じく個数が表示されます。 最後の データフィールドの全アイテムを一旦非表示、必要なフィールドアイテム の計算方法とラベル表示を再設定。 この場合 .DataPivotField.Orientation = xlHiddenのところで次のエラー表示があり 中断してしまいました。 実行時エラー'1004': 「PivotFieldsクラスのOrientationプロパティを設定出来ません」 Select Case ・・・・2003で上手く出来たましたが、2000にコピーして 実施しましたら、 ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 : 金額").Function = xlSum のところで中断し 「オブジェクトは、このプロパティまたはメソッドをサポートしていません」 となりました。 頭が混乱してわからなくなりました。せっかくご教授を頂ながら、申し訳け ございません。明日頭をすっきりさせて頑張ります。 みやほりんさん、代奈さん、弥太郎さんありがとうございました。 (あまちゃん) ---- 元データの「支払金額」列を選択し、「データ」>「区切り位置」> そのまま「完了」としてみてください。 書式が「標準」でも「数値」でも文字列認識の場合、これでうまくいくことが多いのです。 ご参考 ↓↓ [[20051122121128]]『""』(こう) (代奈) ---- 対象データに文字列(目に見えないスペース文字、シングルクォーテー ション[']など)が紛れ込んでいないでしょうか。 これさえ解決できれば問題なさそうな感じですが(みやほりん) ---- みやほりんさん、代奈さん 最後まで懇切丁寧にご指導いただきありがとうございました。 お蔭様で、原因がわかり解決いたしました。 本当に感謝感激です。 上手く行かなかった原因は空白行でした。小遣い帳のため「収入」と「支払」が 混在しますから、先に「収入」のピボットを次に「支払」のピボットを作り、新しい シートに両方をコピーして、集計表を完成するマクロにしていました。そのために 収入のピボットの時は、支払の行が空白になり、何度挑戦しても個数が先に表示され 合計に設定しなおす必要が生じました。 質問する場合は、すべての内容を公開しなければ、いけないことを痛感いたしました。 年間にまとめた小遣い帳のシートを収入と支払に並び替えをし収入分だけと支払分 だけにを分けてピボットを作ろうと思います。 みやほりんさん「たぶんこれで打ち止め〜」といわれながら、ご指導ありがとう ございました。代奈さんにも適切なご指示ありがとうございました。 弥太郎さんにも以前お世話になったと思いますが、 「あまちゃんの代わりに解決マーク打ってあげよか」待っていただきありがとう ございました。 解決できました(^○^) 解決マークこれでよかったでしょうか?(あまちゃん) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200511/20051121212931.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97018 documents and 608144 words.

訪問者:カウンタValid HTML 4.01 Transitional