Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1773 / 2272 ツリー ←次へ | 前へ→

【5222】シェア率の算出方法 sakaiII 05/6/3(金) 7:14 質問[未読]
【5227】Re:シェア率の算出方法 小僧 05/6/3(金) 10:43 回答[未読]
【5258】Re:シェア率の算出方法 sakaiII 05/6/5(日) 21:10 質問[未読]
【5265】Re:シェア率の算出方法 小僧 05/6/6(月) 10:59 回答[未読]
【5320】Re:シェア率の算出方法 sakaiII 05/6/7(火) 21:11 質問[未読]
【5321】Re:シェア率の算出方法 小僧 05/6/8(水) 9:55 回答[未読]
【5356】Re:シェア率の算出方法 sakaiII 05/6/10(金) 21:41 質問[未読]
【5362】Re:シェア率の算出方法 小僧 05/6/12(日) 9:25 回答[未読]
【5372】Re:シェア率の算出方法 sakaiII 05/6/14(火) 12:19 お礼[未読]

【5222】シェア率の算出方法
質問  sakaiII  - 05/6/3(金) 7:14 -

引用なし
パスワード
   以下のような計算結果を求めたいのですが、どうすればよろしいでしょうか?
ご伝授ください。よろしくお願いします。

Table_Aria
メーカー名    数量    金額
AAA      800     15000
BBB      200     8000 

結果(クエリ_Aria)
メーカー名    数量    数量シェア%   金額    金額シェア%
AAA      800     80       15000    65.2
BBB      200     20       8000    34.8
合計       1000    100       23000    100 

【5227】Re:シェア率の算出方法
回答  小僧  - 05/6/3(金) 10:43 -

引用なし
パスワード
   ▼sakaiII さん:
おはようございます。

以下のSQLを、クエリのSQLビューに記述し実行してみて下さい。

SELECT '合計' AS メーカー名, Sum(Table_Area.数量) AS 数量の合計,
100 AS 数量シェア%, Sum(Table_Area.金額) AS 金額の合計, 100 AS 金額シェア%
FROM Table_Area
GROUP BY '合計', 100, 100
UNION ALL SELECT Table_Area.メーカー名, Table_Area.数量,
[数量]/DSum('数量',"Table_Area")*100 AS 数量シェア%,
Table_Area.金額, Format([金額]/DSum('金額',"Table_Area")*100,"#.##") AS 金額シェア%
FROM Table_Area;

ソートするキーがない為、合計が一番上に出ると思いますが…。

【5258】Re:シェア率の算出方法
質問  sakaiII  - 05/6/5(日) 21:10 -

引用なし
パスワード
   前回のレスで、問題解決できました。ありがとうございます。

もし、メーカー名_1、メーカー名_2を追加する場合は、以下のよう記述しましたが、
エラーがでています。
エラー:Sum(Table_Area-1.数量)構文エラー、演算子がありません。
どこに間違いがあるのでしょうか?
ご伝授ください。
よろしくおねがいします。

SELECT
 '合計' AS メーカー名,
 '  ' AS メーカー名_1,    -------->追加したフィールド
 '  ' AS メーカー名_2,     -------->追加したフィールド 
 Sum(Table_Area-1.数量) AS 数量の合計,100 AS 数量シェア%,
 Sum(Table_Area-1.金額) AS 金額の合計, 100 AS 金額シェア%
FROM Table_Area-1
GROUP BY '合計', 100, 100
UNION ALL SELECT
   Table_Area-1.メーカー名,
   Table_Area-1.メーカー名_1,-------->追加したフィールド
   Table_Area-1.メーカー名_2,-------->追加したフィールド
   Table_Area-1.数量,
   [数量]/DSum('数量',"Table_Area-1")*100 AS 数量シェア%,
   Table_Area-1.金額,
   Format([金額]/DSum('金額',"Table_Area-1")*100,"#.##") AS 金額シェア%
FROM Table_Area-1;

【5265】Re:シェア率の算出方法
回答  小僧  - 05/6/6(月) 10:59 -

引用なし
パスワード
   ▼sakaiII さん:
こんにちは。

>[#5245]一読してみてください。

にて クロ さんがご紹介されているリンク先を参考になさると良いかもです。

原因は(おそらく)テーブル名に「-」が使われている事だと思われます。
とりあえずの回避策として [Table_Area-1] としてオブジェクトである事を
明示すれば大丈夫だと思いますが、後々予期しないトラブルが出る可能性があるので
今のうちに名前を変えておいた方が良いと思います。


【5320】Re:シェア率の算出方法
質問  sakaiII  - 05/6/7(火) 21:11 -

引用なし
パスワード
   テーブル名を変えたら、通りました。
ありがとうございます。

後一点を教えていただきたいことがありますので、よろしくお願いします。
%の計算のところで、計算精度を1%にしたいです。
例、
80   →80.00
0.1  → 0.10
0.11  → 0.11

【5321】Re:シェア率の算出方法
回答  小僧  - 05/6/8(水) 9:55 -

引用なし
パスワード
   ▼sakaiII さん:
おはようございます。

下記のSQLをクエリのSQLビューに貼り付けてみてください。

SELECT Q.メーカー名, Q.メーカー名_1, Q.メーカー名_2,
Q.数量の合計, Q.数量シェア%, Q.金額の合計, Q.金額シェア%
FROM [
SELECT '合計' AS メーカー名, ' ' AS メーカー名_1, ' ' AS メーカー名_2,
Sum(Table_Area.数量) AS 数量の合計,1 AS 数量シェア% ,
Sum(Table_Area.金額) AS 金額の合計, 1 AS 金額シェア%
FROM Table_Area
UNION ALL
SELECT Table_Area.メーカー名, Table_Area.メーカー名_1, Table_Area.メーカー名_2,
Table_Area.数量, Table_Area.数量/DSum('数量',"Table_Area") AS 数量シェア%,
Table_Area.金額, Table_Area.金額/DSum('金額',"Table_Area") AS 金額シェア%
FROM Table_Area
]. AS Q;

デザインビューで見た時、「数量シェア%」のフィールドを

Format([数量シェア%]*100,"0.00")

とすれば小数点2桁までの値がでると思います。

またWindowsの [コントロールパネル] → [地域と言語のオプション]で
設定する小数点以下の数字が 2 になっていれば

Format([数量シェア%],"パーセント")

でも良いと思います。

【5356】Re:シェア率の算出方法
質問  sakaiII  - 05/6/10(金) 21:41 -

引用なし
パスワード
   小僧さん
こんばんわ。
やってみましたが、
>デザインビューで見た時、「数量シェア%」のフィールドを
>Format([数量シェア%]*100,"0.00")
ここまではできなかったのです。デザインビューで開くと、SQL文だけです。
私の要領は悪かったかもしれません。
教えてください。よろしくお願いします。

【5362】Re:シェア率の算出方法
回答  小僧  - 05/6/12(日) 9:25 -

引用なし
パスワード
   ▼sakaiII さん:
こんにちは。

>デザインビューで開くと、SQL文だけです。

当方のAc2002環境だとデザインビューが出たので申し訳ないです。


SELECT Q.メーカー名, Q.メーカー名_1, Q.メーカー名_2,
Q.数量の合計, Format([数量シェア%]*100,"0.00") AS 式1,
Q.金額の合計, Format([金額シェア%]*100,"0.00") AS 式2
FROM [
SELECT '合計' AS メーカー名, ' ' AS メーカー名_1, ' ' AS メーカー名_2,
Sum(Table_Area.数量) AS 数量の合計,1 AS 数量シェア% ,
Sum(Table_Area.金額) AS 金額の合計, 1 AS 金額シェア%
FROM Table_Area
UNION ALL
SELECT Table_Area.メーカー名, Table_Area.メーカー名_1, Table_Area.メーカー名_2,
Table_Area.数量, Table_Area.数量/DSum('数量',"Table_Area") AS 数量シェア%,
Table_Area.金額, Table_Area.金額/DSum('金額',"Table_Area") AS 金額シェア%
FROM Table_Area
]. AS Q;

もしくは

SELECT Q.メーカー名, Q.メーカー名_1, Q.メーカー名_2,
Q.数量の合計, Format([数量シェア%],"Percent") AS 式1,
Q.金額の合計, Format([金額シェア%],"Percent") AS 式2
FROM [
SELECT '合計' AS メーカー名, ' ' AS メーカー名_1, ' ' AS メーカー名_2,
Sum(Table_Area.数量) AS 数量の合計,1 AS 数量シェア% ,
Sum(Table_Area.金額) AS 金額の合計, 1 AS 金額シェア%
FROM Table_Area
UNION ALL
SELECT Table_Area.メーカー名, Table_Area.メーカー名_1, Table_Area.メーカー名_2,
Table_Area.数量, Table_Area.数量/DSum('数量',"Table_Area") AS 数量シェア%,
Table_Area.金額, Table_Area.金額/DSum('金額',"Table_Area") AS 金額シェア%
FROM Table_Area
]. AS Q;

でいかがでしょうか?

【5372】Re:シェア率の算出方法
お礼  sakaiII  - 05/6/14(火) 12:19 -

引用なし
パスワード
   解決しました。
ありがとうございました。

1773 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078259
(SS)C-BOARD v3.8 is Free