• 締切済み

並べ替えのキーとなるピボットテーブルフィールド

お世話になっております。 ExcelVBAで作成されたマクロをExcel2003からExcel2010へ移行していたのですが、移行先環境で以下のエラーが出力され、止まってしまいます。 「並べ替えのキーとなるピボットテーブルフィールドが断定できません。」 Excelのバージョンアップにより、なぜ今まで出ていなかったこのエラーが発生したのか、ももちろんですが、このエラーメッセージの意味することすら分かりません(ググっても有効な情報に行き当たりません)。エラー自体は、以下のVBAの命令において発生しています。 もし、詳しい方がいらっしゃいましたら、エラーの意味だけでもご教授いただけないでしょうか。 Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _    Orientation:=xlTopToBottom, SortMethod:=xlPinYin

みんなの回答

回答No.1

パラメータの「Order1」に対しての「key1」が抜けているからじゃないですか? Order1で昇順に並び替えを指定しているが、じゃあどこの行? 列? を基準に並び替えをするんだい?? という事だと思います。2003では複数の列and行を並び替えの対象にする時、ダイアログボックスが出て、並び替えの優先順位として3つの列(or行)を指定でき、それぞれ昇順か降順かを指定できます。それらがVBAでいう所の「key1」「key2」「key3」「Order1」「Order2」「Order3」になります。 >ExcelVBAで作成されたマクロ >Selection ...(Selectionを使う記述の仕方) という2つの記述から、多分マクロの自動記録を使ってコードを生成し、運用されているのではないかと思いました。 単純に1列 または 1行 のデータを並び替える場合、2003ではこのようなコードが作られるのでしょうか....。コードの仕様が違うのかもしれませんね。 私自身はExcel2007を使用してまして、2010でのSortメソッドの記述の詳細が分かりません。そのため、具体的にここをこうすればいいよ、というようなアドバイスが出来ません。 ただ、、ご自身で作成されたマクロでしたらどのような動作をさせたいかは把握されているかと思いますので、マクロの記録機能を使って手動でソートを行い記録させて、生成したコードを問題の部分にコピペすれば解決するかと思います。 それでは~。

関連するQ&A

  • 記述を簡略化させたい

    お世話になります。 下記の記述をスマートにさせたいのですが、ご教示お願いします。         記 Sub 優先順位() Range("A16:Y25").Select Selection.Sort Key1:=Range("Y16"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A43:Y52").Select Selection.Sort Key1:=Range("Y43"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A70:Y79").Select Selection.Sort Key1:=Range("Y70"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A97:Y106").Select Selection.Sort Key1:=Range("Y97"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A16").Select End Sub

  • エクセル2010マクロについて教えてください!

    パソコンが代わってEXCEL2003から2010に代わってしまい今までできていたマクロができなくなってしまいました。 小規模な会社なので私だけしかEXCELを使る人がいなく、困っています。 2003の内容を表示しますので、誰か教えてください。 エラー1004 RangeクラスのSortメソッドが失敗 ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "花[すべて]", xlLabelOnly lection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _ Orientation:=xlTopToBottom, SortMethod:=xlPinYin 誰か助けてください。 よろしく御願いします。

  • 並べ替えのマクロで対象行の範囲を行を増やした分だけ可変にして増やしたい。

    マクロ超初心者です。エクセル2003においての質問です。 作成した〔日付順〕のボタンを押すことで並べ替えをしたいと思い,以下のマクロを「記録」から作成したのですが, 9行~153行の間に行を挿入した場合,並べ替えの対象となる行も同じように増えてほしいのですが,常に9行~153行のままで増えてくれません。 可能なら9行より前に行を挿入した場合も同じように可変して欲しいです。 全くのマクロ初心者でどう変えればいいのか分かりません。 また,「記録」から作成したマクロには操作内容が全て存在するようなのですが, 消してもいい不要な部分も分からないので教えて頂ければありがたいです。 よろしくお願いします。 (出来れば以下を書き直して全て貼り付けて頂けるとかなり助かります。) sub 日付順()    Rows("9:153").Select    Selection.Sort Key1:=Range("I9"),Order1:=xlAscending,Key2:=Range("J9") _       ,Order2:=xlDescending,Header:=xlGuess,OrderCustom:=1,MatchCase:= _       False,Orientation:=xlTopToBottom,SortMethod:=xlPinYin,DataOption1:= _       xlSortNormal,DataOption2:=lxSortNormal    Selection.Sort Key1:=Range("H9"),Order1:=xlAscending,Key2:=Range("B9") _       ,Order2:=xlDescending,Key3:=Range("M9"),Order3:=xlAscending,Header _       :=xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom _       ,SortMethod:=xlPinYin,DataOption1:=xlSortNormal,DataOption2:= _       xlSortNormal,DataOption3:=lxSortNormal End Sub

  • VBA 列の並べ替えについて

    以下のようなコードを考えています。 (1)セルA2からO10を選択する。 (2)最優先するキーをD列として(昇順)、(1)を並べ替える。 (3)印刷する。 (4)(1)の並びに戻す。((2)で並べ替えする前の状態にする) マクロ記録から以下のコードは分かりましたが、続きが分かりません。よろしくお願いします。 Sub test() Range("A2:O10").Select Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, _   Header:=xlGuess ,OrderCustom:=1,Orientation:=xlTopToBottom,_ SortMethod:=xlPinYin Selection.PrintOut Copies:=1, Collate:=True End Sub

  • マクロの解析してください。

    仕事で使うようになったファイルにマクロが登録してありました。 一体、何をしているのかわかる方お願いします。 Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Key2:=Range("B4") _ , Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _ , Orientation:=xlTopToBottom, SortMethod:=xlPinYin End Sub と、あるのですが宜しくお願いします。

  • エクセルのマクロでの並べ替えにおいて

     できるExcel2000マクロ&VBAを読みながら,マクロに初挑戦しました。ところが初めからつまづいています。  住所録の並べ替えです。131人分の住所録をフリガナをキーに並べ替えるのをマクロに記録しました。保存して,早速機能を確認しようと132人目の住所などを入力し,マクロを実行しましたが,機能しませんでした。 Moduleは以下のようになっています。 Sub 五十音順並べ替え() ' ' 五十音順並べ替え Macro ' マクロ記録日 : 2005/1/12 ユーザー名 : ' ' Range("A1:G131").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range _ ("C2"), Order2:=xlAscending, Key3:=Range("B2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= _ xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, DataOption3:=xlSortNormal End Sub 最初の Range("A1:G131") の131が臭いと思い,この数字を132にしたり,住所録の131番目以上に新しいデータを挿入したりするとマクロは機能します。きっと当然のことなのでしょうが・・・。おそらく記録するときに何か問題があるのではないかと思うのですが,解決法をご教授下さい。

  • エクセル VBA 集計方法

    各シート毎に下記の内容にて集計をしたいのですが、A2のセルにデータがない場合集計をしない方法がわからないのでご存じの方宜しくお願い致します。 Sheets("Sheet1").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet2").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet3").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub

  • 【VBAでソートを実行したい】

    ExcelVBAでオブジェクトを設定し、ソートを実行したいのですが、エラーになってしまいます。 ロジックは下記のようにしていますが、問題の箇所はマクロの記録でコピーしたものです。 オブジェクトとして実行しているので、エラーになるのでしょうか? どなたか分かる方、回答をお願いいたします。 dim goBook As Object Set goBook = CreateObject("Excel.Application") 'セルをクリアする goBook.Cells.Clear goBook.Range("A1").Select 'ソート実行 goBook.Columns("A:A").Select ''//このロジックでエラーになります↓ goBook.Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin

  • 並べ替えの参照が正しくありません。

    エクセル2010VBAで昇順に並べ替えをしようと思ったのですが Sub Macro() ActiveWorkbook.Worksheets("ベース").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("ベース").AutoFilter.Sort.SortFields.Add Key:= _ ActiveSheet.UsedRange, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("ベース").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub をすると .Applyの部分で 実行時エラ―1004 並べ替えの参照が正しくありません。 参照が並べ替えるデータ内にあることと [最優先されるキー]ボックスが空白でないことを確認してください。 となります。 マクロの記録を使って記録を取り 範囲がよく変わるのでUsedRangeに書き換えたのですが 何がおかしいですか?

  • Excelのマクロでソートがうまく動かない

    *** ソース *** Sheets("Sheet 1").Select Range("B2:H92").Select Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("H3") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin Range("B2").Select Sheets("Sheet 2").Select Range("B2:K49").Select Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("I3") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin Range("B2").Select ... 以下省略 ************* 上記のように複数のシートを一括してソートを行うようにマクロを組んでいます。 ですがマクロを実行するとタイトル行も含めてソートを行うなど、おかしな挙動になってしまいます。 ソートの条件としては「範囲の先頭行」を「タイトル行」で行わせたいのですが、「データ」でソートを行うシートが出てしまうのです。 太字にすると回避できるなど試したのですが、うまくいかなかったです。 Header:=xlYes にする事でも回避できるとあったのですが、変数を説明している一覧などが見つからなかった為、試していません。 よい方法をご存知の方がいましたら、ご教授下さい。