• ベストアンサー

R1C1形式ではなく列記号に書き換えたい

マクロの記録でピボットテーブルの範囲を選択する行動を記録したのですが 範囲が「実績!R1C1:R5216C29」と取得されました。 これをR1C1形式ではなく列記号に書き換えたいのですが、 どのような文字列を作ればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >範囲が「実績!R1C1:R5216C29」と取得されました は >実績!$A$1:$AC$5216 となるみたいです。 ※ 簡単に確認する方法 ※ まず あるSheet名を「実績」とし、 別Sheetをアクティブにし  Excelのオプション → 数式 → R1C1参照形式を使用する に チェックを入れ =実績!R1C1:R5216C29 という数式を入れておきます。 その後 R1C1参照形式を使用する のチェックを外せば 上記数式が表示されます。 ※ R1C1参照形式に慣れている人であれば、すぐにわかるのでしょうが、 当方もほとんど使用しませんので、このような方法で確認してみました。m(_ _)m

wlkwdfpyfms
質問者

お礼

ご回答ありがとうございました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>マクロの記録でピボットテーブルの範囲を選択する行動を記録した ご利用のエクセルのバージョンによって,具体的に記録されるマクロの書きぶりが違います。 どのバージョンのエクセルで,具体的にどの部分の記述について困っているのでしょうか。 とりあえず,PivotCaches.Createの中の SourceData:=に与える部分について言えば,ふつーにA1形式でもR1C1形式でもどちらの文字列も気にせず使えます。 具体的な対象範囲は「あなたがピボットテーブルのネタにしたいセル範囲」そのものですから,ご自分のワークシートの元データのセル範囲を sourcedata:="実績!A1:AC5216" のように,見たまんまで書いてやればOKです。

wlkwdfpyfms
質問者

お礼

ご回答ありがとうございました。

回答No.2

こんばんは。 ご質問の意味は、どうしたいのかよく分かりませんが、A1方式に換えたいというなら、 例えば、ユーザー定義関数で、このようにすればよいと思います。 '// Function AddressAlt(n As String) Dim ret As Variant If Application.ReferenceStyle = xlA1 Then   ret = Application.ConvertFormula(n, xlR1C1, xlA1) Else   ret = Application.ConvertFormula(n, xlA1, xlR1C1) End If If IsError(ret) Then 'エラーが返ったら、そのままにする   AddressAlt = n Else   AddressAlt = ret End If End Function '// 例: A1: 実績!R1C1:R5216C29 =AddressAlt(A1) とすれば、「実績!$A$1:$AC$5216」 が取得できます。 ワークシートの関数でも、Address 関数を使えば出るでしょうけれども、たぶん、配列から数値を取り出して行うように思いますが、何か面倒くさそうです。それなら、返って、Ver.4マクロ関数でありそうな気がします。VBAでは、ConvertFormulaを使います。 もし、画面が、R1C1方式で、出力した 実績!$A$1:$AC$5216 を、 =AddressAlt(R1C1) とすれば、 「実績!R1C1:R5216C29」 と返すことも出来ます。 もし、質問の意味を取り違えていたら、無視して構いません。

wlkwdfpyfms
質問者

お礼

ご回答ありがとうございました。

関連するQ&A