ママのスキンケアのお悩みにおすすめアイテム

【Excel】要素数が不定な場合のGETPIVOTDATAの使い方を教えてください。

Excel 2003で添付画像のようなサンプルデータを作成しています。

以下の4つのテーブルがあります。
・テーブル(1):受注データ
 (条件)
  ・品名,メーカーは必須
  ・メーカーの要素数は不定
  ・タイプは空白の場合もあり

   品名  |メーカー |タイプ | 数量
 -------------------------------------------
 テレビ   |  A  | 1   | 1
 スピーカー |  D  |    | 2
 テレビ   |  C  |    | 3
 エアコン  |  A  | 1   | 4
 スピーカー |  A  |    | 1
 テレビ   |  B  |    | 2
 エアコン  |  A  | 1   | 3
 テレビ   |  A  | 1   | 4
 テレビ   |  A  | 2   | 1
 スピーカー |  A  |    | 2
 
・テーブル(2):価格データ
 メーカー |  品名    | タイプ | 価格
 --------------------------------------------------
   A  |  エアコン  |  1  | 100,000
   A  |  スピーカー |     | 10,000
   A  |  テレビ   |  1  | 100,000
   A  |  テレビ   |  2  | 70,000
   A  |  テレビ   |  3  | 50,000
   B  |  テレビ   |     | 50,000
   C  |  テレビ   |     | 120,000
   D  |  スピーカー |     | 7,000

・テーブル(3):テレビの合計受注数量,価格
 メーカー | タイプ| 単価   | 合計数量 |  小計 
 ----------------------------------------------------------------
   A  |  1  | 100,000  |  5    |  500,000
   A  |  2  | 70,000  |  1    |  70,000
   B  |     | 50,000  |  2    |  100,000
   C  |     | 120,000  |  3    |  360,000
 
・ピボットテーブル:受注データの集計
 -------------------------------------------------------
 合計 / 数量
 -------------------------------------------------------
   品名  | メーカー |  タイプ  |  集計
 -------------------------------------------------------
 エアコン  |  A    |  1     |  7
 スピーカー |  A    |  (空白)  |  3
       |  D    |  (空白)  |  2
 テレビ   |  A    |  1     |  5
       |      |  2     |  1
       |  B    |  (空白)  |  2
       |  C    |  (空白)  |  3
 -------------------------------------------------------
   総計  |      |       |  23


価格データおよびピボットテーブルから、テーブル(3)を生成したいのですが、ピボットテーブルからの値の抽出に苦戦しています。

受注合計数はピボットテーブルから以下のような数式で取り出しています。
 =GETPIVOTDATA("合計 / 数量",F1,"品名","テレビ","メーカー","A","タイプ",1)
しかし品名,メーカー,タイプを1つ1つ手入力しているため、ピボットテーブルの要素数が増えた場合に動的に対応できません。
  ※新たにメーカーAのタイプ3の受注が入った場合など

このように要素数が不定なピボットテーブルから、テレビの行をすべて抽出するにはどうすればよいでしょうか?

なお、テーブル(2)は実際には莫大な行数なので、テーブル(2)から全メーカー/タイプのテレビを拾い上げるわけにはいきません。


つたない文章でわかりづらいかと思いますが、ご教示お願いいたします。

「【Excel】要素数が不定な場合のGET」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>=GETPIVOTDATA("合計 / 数量",F1,"品名","テレビ","メーカー","A","タイプ",1)


セル参照も使えますよ
E24セル
=GETPIVOTDATA($F$1,"テレビ "&B24&" "&C24&" 数量")
下へオートフィル


>テーブル(2)は実際には莫大な行数なので、テーブル(2)から
>全メーカー/タイプのテレビを拾い上げるわけにはいきません。

そんな難しくなんだけどなあ。
G13 品名
G14 テレビ
G16:H16 メーカー タイプ

データ フィルタ フィルタオプションの設定
●指定した範囲
リスト範囲 $A$13:$D$21
条件範囲 G13:G14
抽出範囲 G16:H16
[レ]重複するレコードは無視する

添付画像が細かすぎて見えないかも
「【Excel】要素数が不定な場合のGET」の回答画像2
    • good
    • 0

ピボットテーブルは表1での新たなデータの追加に対してはその都度操作をすることになりますし、その技術が無いと対応できません。

関数を使って処理をすることがお勧めです。
次のようにしてはどうでしょう。
シート1は表1に当たるものでA1セルには品名、B1セルにはメーカー、C1セルにはタイプ、D1セルには数量の項目名がありそれぞれのデータが下方に入力されているとします。
シート1では作業列をE列およびF列に作ります。
E2セルには次の式を入力して下方にオートフィルドラッグします。

=TRIM(A2)&TRIM(B2)&TRIM(C2)

F2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A2="","",IF(COUNTIF(E$2:E2,E2)>1,"",INDEX(Sheet2!F:F,MATCH(E2,Sheet2!E:E,0))))

シート2は表2に対応するものでA1セルにはメーカー、B1セルには品名、C1セルにはタイプ、D1セルには価格の項目名がありそれぞれのデータは下方に入力されているとします。
シート2にも作業列を設けます。
E2せるには次の式を入力して下方にオートフィルドラッグします。

=TRIM(B2)&TRIM(A2)&TRIM(C2)

F2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(OR(B2="",Sheet3!$A$1=""),"",IF(TRIM(B2)=Sheet3!$A$1,MAX(F$1:F1)+1,""))

そこでシート3にはお求めの表を作ることにします。
A1セルにはテレビなどの項目名を入力します。B1セルには合計受注数量、価格とでも入力します。
A2セルにはメーカー、B2セルには品名、C2セルにはタイプ、D2セルには単価、E2セルには合計数量、F2セルには小計とでも項目名をそれぞれ入力します。
A3セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(ROW(A1)>COUNT(Sheet1!$F:$F),"",IF(COLUMN(A1)=1,INDEX(TRIM(Sheet1!$B:$B),MATCH(SMALL(Sheet1!$F:$F,ROW(A1)),Sheet1!$F:$F,0)),IF(COLUMN(A1)=2,INDEX(Sheet1!$C:$C,MATCH(SMALL(Sheet1!$F:$F,ROW(A1)),Sheet1!$F:$F,0)),IF(COLUMN(A1)=3,INDEX(Sheet2!$D:$D,MATCH(TRIM($A$1&$A3&$B3),Sheet2!$E:$E,0)),IF(COLUMN(A1)=4,SUMIF(Sheet1!$E:$E,TRIM($A$1&$A3&$B3),Sheet1!$D:$D),IF(COLUMN(A1)=5,$C3*$D3,""))))))

これでシート1に新たなデータが追加されても自動的に表が更新されます。
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q【EXCEL2003/2007】 GETPIVOTDATAのバグ?

EXCEL2003,2007のGETPIVOTDATA関数についてです。
第一引数であるデータフィールドを、セルの参照を用いようとすると#REFが返ってきます。(正しい文字列をハードインプットすると、値が返ってくる)どうしたらよろしいでしょうか?もしくは、みなさんは実行可能ですか?

(Excel 2000との互換を保つために第一引数に参照が入っていると、旧形式(ピボットテーブル、値の順で引数)が自動的に呼ばれてしまうのかと推測しています。)

Aベストアンサー

ヘルプを見たらデータフィールドは「半角の二重引用符(")で囲まれます」とあります。

 =GETPIVOTDATA("商品",…

の代わりに、A1セルに「商品」を入力しておいて
 =GETPIVOTDATA(""&A1&"",…
でも#REF!エラーになることなく結果が得られます。

QExcel > ピボットテーブル「(空白)」非表示

Excel 2003 で、ピボットテーブルを利用した際、元データにて未入力のセルは、ピボットテーブルでは「(空白)」と表示されてしまいます。

これを、任意の文字列や、空白のまま表示(「(空白)」を非表示)にする方法はありますか?

空白セルそのものを非表示する方法は、ピボットタイトル行の▼で「(空白)」をチェックオフすれば消えますが、これでは関係する行の他列も非表示になってしまいます。

ただ「(空白)」ではく、空白のまま表示したいだけなのですが、その方法が分かりません。

宜しくお願い致します。

Aベストアンサー

ピボットテーブルの行や列フィールドの「アイテム」(個々の「あ」や「い」,「A」「B」「1・2・3」,「(空白)」も同じ)は,作成したピボットテーブルの中で「(アイテムの)キャッシュ」として保持されています。
実際今回の「(空白)」だけでなく,たとえば列Bフィールドのアイテム「1」1セルを「1個」と書き換えてみると,レポート上のアイテム1が全部1個と表記されます。
レポートで行列アイテムを直接書き換えることで,キャッシュの中で「元データの1 = アイテム表記は1個」というデータを保持し,以後それを使って表示してくれるためです。


#余談ですが,たとえば「四半期」で日付をグループ化すると,エクセルでは1月から3月が第1四半期として集計されます。
これを日本の四月からの会計年度に合わせて「1-3月」は第4四半期に,そして「4-6月」を第1四半期として集計させたいような場合にも,この方法を利用することができます。

Qピボットテーブルの項目間の計算

ピボットテーブルの項目間の計算

ピボットテーブルを勉強しています。ピボットテーブルで各項目間同士の計算をしたいと思っています。

例えば下記のURLの「支出のピボットテーブル」のB列(4月)とC列(5月)を
掛け算して、別のフィールドに出したいと思います。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/kake-pib.htm

集計フィールドの追加でできると思って探したのですが、各項が表示されません。

もしできるようでありましたらお教えください。

Excelのバージョンはどのバージョンも会社にあるので、やり方があるようでしたらお教えください。

Aベストアンサー

まず,あなたが試しに計算してみたかった「4月」や「5月」は,『フィールド』ではなく,年月日フィールドの中のイチ『アイテム』に過ぎないので,「4月と5月のかけ算や足し算」をしたいのでしたら「集計アイテム」を利用する事になります。

しかしご覧になったサンプルでは,既に年月日フィールドを年と月で「グループ化」してしまっているため,集計アイテムを追加する事は,もはや出来ません。



>ピボットテーブルで各項目間同士の計算をしたいと思っています。

元のデータをどのように細工できるか,また具体的にどのような計算をしたいのかに応じて,出来ることや出来ないことや特別なやり方がいろいろあります。

●できないこと
 前述したように,今のままでは「4月×5月」といった集計は出来ません
 単に元データから新たなレポートを追加で作成しても,元データを同じにする他のピボットテーブルレポートでグループ化を行っている場合は,その影響が及ぶため,やはり集計アイテムは追加できません。
 全く新しい元データからピボットテーブルレポートを作成し,先に集計アイテムを追加しようにも,今度は「4月」や「5月」のアイテムがまだそこに無いので,いま計算したかった集計アイテムを追加することはやはりできません。


○できること
 たとえば元のデータに一列「月」列を追加して「4」や「5」など月や年の数字を関数を使って書き出します。ピボットテーブルレポートを作成し,「月」列を使って「集計アイテム」を追加すれば,「4×5」でも「4+5」でも項目間の計算を追加することができます。

○できること
 たとえば元のデータを全く作り替え,たとえば
 A列に項目名
 B列に4月の数値
 C列に5月の数値
 のような表に切り直しておいてピボットテーブルレポートを作成すると,「4月フィールド」と「5月フィールド」が発生するため,「集計フィールド」を利用してフィールド間の計算もできるようになります。

○できること
 ナンデモ自由にできるワケじゃなくかなり限定的な機能ですが,たとえばデータエリアの中のセルを右クリックして「フィールドの設定」から「オプション」を開き,添付図のようにすると「横方向の累計」を計算して表示させるような仕込みをする事はできます。

まず,あなたが試しに計算してみたかった「4月」や「5月」は,『フィールド』ではなく,年月日フィールドの中のイチ『アイテム』に過ぎないので,「4月と5月のかけ算や足し算」をしたいのでしたら「集計アイテム」を利用する事になります。

しかしご覧になったサンプルでは,既に年月日フィールドを年と月で「グループ化」してしまっているため,集計アイテムを追加する事は,もはや出来ません。



>ピボットテーブルで各項目間同士の計算をしたいと思っています。

元のデータをどのように細工できるか,...続きを読む

Qエクセルのピボットで、集計値降順で表示するには?

お世話になります。
エクセルのピボットテーブルで、担当者ごとの売上集計表を作成しています。ウィザードで、「行(R)」に担当者名、「データ(D)」に合計/売上をいれています。

名前の順ではなく、売上集計額の高い順に表示することはできますか?
今はピボットテーブルから値貼り付けして
普通の表にしてから並べ替えています。
よろしくお願い致します。

Aベストアンサー

担当者を売上集計額順ですか?
標題の担当者名のセル(ボタン状になっている)でダブルクリックして詳細をクリック
「自動並べ替えオプション」で降順を選択して、
「使用するフィールド」を「売上集計額」にしてください。

Qピボットテーブルを使用した場合の「#DIV/0!」のエラー表示を表示させないためには?

エクセルのピボットテーブルを使用した際に「#DIV/0!」のエラー表示を出さないようにするにはどうすればよいのでしょうか?「ISERROR」を使用すると思うのですが、ピボットテーブルを使用した場合なので… とても困っていますのでよろしくお願い致します。

Aベストアンサー

ピボットテーブルを右クリックして「オプション」を選択
「エラー値に表示する値」にチェックして代替表示する文字か数値を設定してください。

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

QEXCEL2007 VBAでピボットのフィルタ指定

EXCEL 2007 VBAでピボットテーブルを生成しようとしております。

レポートフィルタで初期表示するデータフィールド「メーカー」の値も
指定できればと思っております。

「メーカー」には今回データで「A」「B」「C」「D」「E」とあったとして
「メーカー」 ... 「A」と「C」だけで表示指定したいとして、
下記操作で記録マクロを取ってみました。

1. レポートフィルタ「メーカー」を追加
2. フィルタ条件で「(すべて)」のチェック外して、全て消す。
3. 「メーカー」 ... 「A」と「C」を指定

結果は希望通りなのですが、
記録マクロを確認すると下記のように「A」と「C」で指定できておりません。

これだとメーカー「F」のデータが追加された際、
希望通りでないと思うのですが、良い方法をどなたかご存じないでしょうか?

ActiveSheet.PivotTables("数量予測").PivotFields("メーカー").CurrentPage = "(All)"
With ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
.PivotItems("B").Visible = False
.PivotItems("D").Visible = False
.PivotItems("E").Visible = False
End With

EXCEL 2007 VBAでピボットテーブルを生成しようとしております。

レポートフィルタで初期表示するデータフィールド「メーカー」の値も
指定できればと思っております。

「メーカー」には今回データで「A」「B」「C」「D」「E」とあったとして
「メーカー」 ... 「A」と「C」だけで表示指定したいとして、
下記操作で記録マクロを取ってみました。

1. レポートフィルタ「メーカー」を追加
2. フィルタ条件で「(すべて)」のチェック外して、全て消す。
3. 「メーカー」 ... 「A」と「C」を指定

結果は希望通...続きを読む

Aベストアンサー

Ver2007でClearAllFiltersメソッドが追加されました。
繰り返して使う場合も想定して、ClearAllFiltersで一旦全表示にします。
その後、表示したいアイテムを指定して、それ以外(Case Else)は非表示、
という処理で良いかと思います。

Sub try()
  Dim pf As PivotField
  Dim p As PivotItem

  Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
  pf.Orientation = xlPageField
  pf.ClearAllFilters
  For Each p In pf.PivotItems
    Select Case p.Value
    Case "A", "C" '表示アイテム名をカンマ区切りで指定
    Case Else
      p.Visible = False
    End Select
  Next
End Sub

Ver2007以降でないと動作しません。
2003でも使う可能性があるなら以下のようにPageFieldを再配置。
但し、再配置前に更新する必要があります。

Sub try_2()
  Dim pf As PivotField
  Dim p As PivotItem

  Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
  pf.Orientation = xlHidden
  pf.Parent.PivotCache.Refresh
  pf.Orientation = xlPageField
  For Each p In pf.PivotItems
    Select Case p.Value
    Case "A", "C" '表示アイテム名をカンマ区切りで指定
    Case Else
      p.Visible = False
    End Select
  Next
End Sub

Ver2007でClearAllFiltersメソッドが追加されました。
繰り返して使う場合も想定して、ClearAllFiltersで一旦全表示にします。
その後、表示したいアイテムを指定して、それ以外(Case Else)は非表示、
という処理で良いかと思います。

Sub try()
  Dim pf As PivotField
  Dim p As PivotItem

  Set pf = ActiveSheet.PivotTables("数量予測").PivotFields("メーカー")
  pf.Orientation = xlPageField
  pf.ClearAllFilters
  For Each p In pf.PivotItems
    Select Case p.Value
   ...続きを読む

Qピボットテーブルで作った2つの表の実績比較について

お世話になります。今、ピボットテーブルで出来た2つの表の実績比較を行っていますが、ピボットテーブルの操作を最近覚えた私には解決できません。ご存知の方からのご指導をお願いします。
表1) 2010年度
  A    B C D E
      1    商品名   メーカー名  売上金額  個数   仕入原価
      2     商品A   メーカー1   100      10     80 
      3      ・    メーカー2    150      15    112 
      4      ・    メーカー3    200      20     150
      ・      ・              ・       ・     ・
      ・      ・              ・       ・     ・
      10    商品D

表2) 2011年度 
             A B C D E
1 商品名  メーカー名  売上金額  個数   仕入原価
       2    商品A   メーカー2    80        8     64 
       3           メーカー4   120       12    110 
       4           メーカー5   180       18    150
       ・                     ・        ・     ・
       ・                     ・        ・     ・
       11    商品E

作りたい表) 
           2011年度                           2010年度
      A B C D E     F G H I
1 商品名  メーカー名 売上金額 個数 仕入原価  売上金額 個数 仕入原価  C/F
2    商品A   メーカー1                      100   10     80 
3           メーカー2    80    8     64  150   15    112 53.3%
4           メーカー3    200   20     150
         メーカー4   120   12    110 
            メーカー5   180   18    150
2つの表のメーカー毎の年度比較を行いたいのですが・・・・どうすれば出来るかわかりません。
しかも、要領を得ない質問で恐縮ですが、ご存知の方のご指導をお願いします。

お世話になります。今、ピボットテーブルで出来た2つの表の実績比較を行っていますが、ピボットテーブルの操作を最近覚えた私には解決できません。ご存知の方からのご指導をお願いします。
表1) 2010年度
  A    B C D E
      1    商品名   メーカー名  売上金額  個数   仕入原価
      2     商品A   メーカー1   100      10     80 
      3      ・    メ...続きを読む

Aベストアンサー

今のような2つのリストからでは,ピボットテーブルレポートを使ってアナタが希望しているような整理をする方法はありません。


>どうすれば出来るかわかりません。

「ピボットテーブルレポートを使って」そういった整理をしたいというご質問への回答しては
1.表1のA列に「年度」列を追加して,2010をずらり並べる
2.表2のA列に「年度」列を追加して,2011をずらり並べる
3.表2を丸ごとコピーして,表1の下に継ぎ足してひとつのリストにする
4.ピボットテーブルレポートを作成する

といった方法になります。



#幾つかの補足
実際には,元の表1/表2に直接手を入れて作り直す必要はありません。
たとえばシート1に表1,シート2に表2があるなら,シート3にシート1と2からリンクする式でデータを再掲して縦1列にまとめた「表3」を別に作成して,そちらで集計すれば十分です。

実際には,縦1列に継ぎ足した「表3」は,別にしっかりぴったし上下にくっつけて作成する必要もありません。たとえば表1が最大で70行,表2が最大でも90行分あったとしたら,表3の上半分は1行目から100行目まで割り当てて余った部分は空けておき,表3の下半分は101行目から表2をリンクしておくような作り方でも全く十分です。


#もしも,表1と表2の「縦項目」が今のような「商品」と「メーカ」の2列構成ではなく,1列だけの構成だった場合に限り,「複数のワークシート範囲」を元データとしてピボットテーブルレポートを作成する方法が使えました。

 なお,ピボットテーブルレポートの作り方や具体的な操作の段取りは,ご利用のエクセルのバージョンによって少し変わります。ご相談では,必ずいまアナタが使っているエクセルのバージョンまでキチンと明記してご質問を投稿することを憶えておいてください。

今のような2つのリストからでは,ピボットテーブルレポートを使ってアナタが希望しているような整理をする方法はありません。


>どうすれば出来るかわかりません。

「ピボットテーブルレポートを使って」そういった整理をしたいというご質問への回答しては
1.表1のA列に「年度」列を追加して,2010をずらり並べる
2.表2のA列に「年度」列を追加して,2011をずらり並べる
3.表2を丸ごとコピーして,表1の下に継ぎ足してひとつのリストにする
4.ピボットテーブルレポートを作成する

といった方法...続きを読む

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。


人気Q&Aランキング