プロが教える店舗&オフィスのセキュリティ対策術

Accessで以下のようなクロス集計を作成したのですが、元データを消してしまいました。
クロス集計の結果はエクセルで残っているのですが
元データを生成する良い方法は無いでしょうか
どなたかご存知でしたらご教授下さい。
よろしくお願いいたします。

クロス集計結果
商品名 営業所1売上 営業所2売上 ・・・・・・
商品1  100   200    ・・・・・・ 
商品2    0    50    ・・・・・・
商品3   50    10    ・・・・・・

元データ形式
商品名 営業所名  売上
商品1 営業所1 100
商品1 営業所2 200
商品2 営業所1   0
商品2 営業所2  50
商品3 営業所1  50
商品3 営業所2  10
・・・・・・・・・・

A 回答 (2件)

エクセルのVBAです。



集計データをSheet1、作成先をSheet2とします。

クロス集計結果等の見出しを省き、必要なデータのみを残します。
データがA1から開始することを前提とします。


Sub Sample()

Dim SyukeiData As Range
Dim i As Integer
Dim j As Integer
Dim k As Integer

Set SyukeiData = Sheets("Sheet1").Range("A1").CurrentRegion

k = 1

For i = 2 To SyukeiData.Rows.Count
For j = 2 To SyukeiData.Columns.Count
Sheets("Sheet2").Cells(k, 1) = SyukeiData.Cells(i, 1)
Sheets("Sheet2").Cells(k, 2) = SyukeiData.Cells(1, j)
Sheets("Sheet2").Cells(k, 3) = SyukeiData.Cells(i, j)
k = k + 1
Next
Next

Set SyukeiData = Nothing

End Sub

以上です。
    • good
    • 0
この回答へのお礼

keirikaさん
ありがとうございます。
すばらしい。おぉ。という感じです。
私はVBAは殆ど分からないのですが、目から鱗です。
このままで、縦横がどんなに大きな集計表になっても
使えるのですね!
違うときにも十分使えそうです。
アドバイスいただいたVBAを今度自分なりに勉強してみます。
ありがとうございました。

お礼日時:2008/06/10 23:33

Excelのテーブルをインポートしてから


ユニオンクエリを使います

select 商品名,"営業所1" as 営業署名,営業所1売上 as 売上
from テーブル名
union all
select 商品名,"営業所2" as 営業署名,営業所2売上 as 売上
from テーブル名
union all

    • good
    • 0
この回答へのお礼

CHRONOS_0さん
ありがとうございました。戻せました。
でも少し違ったのが
売上を[]で閉じなければ出来なかった点と、union all だと
FROM構文エラー になってしまった点でしたが、
CHRONOS_0さんのアドバイスでどうにか戻すことが出来ました。
私の知識では、なぜエラーになったのか分かりませんが、
アクセスのバージョンのせいでしょうか、ちなみに私の環境は
エクセルもアクセスも2000です。
最初にそのようなことも書かずに大変失礼しました。
そして、ありがとうございました。

以下 私の方で出来たクエリーです。
select 商品名,"営業所1" as 営業所名,営業所1売上 as [売上]
from sheet1
union
select 商品名,"営業所2" as 営業所名,営業所2売上 as [売上]
from sheet1

お礼日時:2008/06/10 23:13

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

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


このQ&Aを見た人がよく見るQ&A