【お題】引っかけ問題(締め切り10月27日(日)23時)

普段はExcelで簡単なデータ入力くらいしかしていない者です。

Accessのテーブルで
A1 A2 A3 … A30 B1 B2 … B30 C1 C2 … C30

となっているデータを

A1 B1 C1
A2 B2 C2
A3 B3 C3
・   ・   ・
・   ・   ・
A30 B30 C30

と並び替えなければいけないのですが、方法がわかりません。
Excelに変換したほうがよいのでしょうか。
よい方法がありましたら教えていただきたいです。
よろしくお願いします。

A 回答 (3件)

ややこしいですね


ちなみにAccessはどのくらい扱えるのでしょうか
新しくテーブルを作る、クエリを作ることができるのなら

>その後、2の後ろに、2つのうち何番目ということで、
>10,2,1,a,a, , , ,
まで編集することはできそうです

とりあえず新しく
[No.][数字][何番目][A][B][C]のフィールドを持つテーブルを作る

クエリ→新規作成→デザインビュー→テーブル表示閉じる→表示→SQLビュー
で開くところに以下の4行をコピー

INSERT INTO 新テーブル ( No., 数字, 何番目, A, B, C )
SELECT 現テーブル.No., 現テーブル.数字, 1 AS 式, 現テーブル.A1, 現テーブル.B1, 現テーブル.C1
FROM 現テーブル
WHERE (((現テーブル.数字)>=1));

テーブル名やフィールド名は適宜直してください

この状態でクエリ→実行
すると新しいテーブルに何番目=1のものが入ると思います

これでうまくいけば
2行目の 1 AS 式 、 A1 、 B1 、C1
4行目の >=1
のそれぞれ1を2...30と変えてクエリを実行していけばいけば
順々に追加されていくでしょう

30回繰り返すといってもたいした作業でないので
今後Accessのデータが変わった場合でも応用がききます
(その場合30個を別々のクエリとして保存しておきましょう)

またこれは追加クエリなので
再計算する時は新しいテーブルの中身を一度削除しないと
古い結果が残ってしまうのでご注意を

参考になれば
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
ご回答ありがとうございました。

教えていただいた構文を参考に、AccessやSQLの本を読みながらですが何とか追加クエリが作成できました!

まだ30のうち2までしか進んでいないのですが、忘れないようにメモしながら進めようと思います。
ありがとうございました。

お礼日時:2005/06/06 14:42

こういう問題はアクセスVBAでプログラムを組むことになるでしょう。


第1レコードの左からのフィールドに、KEY番号としてデータに付加して、独立レコードに分解します。
番号つきの1フィールド・1レコードにします。
今100列100行以内として3桁の数字を組み立てます。1は001のように0は必須です。
001001,002001,003001,004001,005001・・
のように列・行の番号を振ります。
第2レコードは
001002、002002,003002、004002・・です。
やはり列・行の組み合わせ番号を振ります。
第3レコードは001003、002003、003003、004003、・・
全レコード、全フィールド分解し終わって後、
これらを全体で番号順にソートします。
すると
001001
001002
001003
・・・・・
002001
002002
002003
・・・・
・・・
となります。
これを
001001,001002、001003・・・
002001,002002,002003・・
最初の3桁が同じ間は同一レコードのフィールドとして組み立てます。
転置(行列)のロジック(TRANSPOSE)
エクセルにはTRANSPOSE関数があります。
6行5列のデータを6列5行のデータにします。
正方行列でなくてもよい。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
ご回答ありがとうございました。

私自身、VBAはまったく使ったことがなかったのですが、プログラムを組む事ができるようになれば、今後生かす機会がとても多そうです。

まだ今はSQLでいっぱいになっている状態ですが、VBAの方法も調べていきたいと思います。
ありがとうございました。

お礼日時:2005/06/06 14:50

テーブルのレコード自体を並び替えるということですよね。


ExcelにいったんエクスポートしてExcelで別のシートにコピーした方が早いかもしれません。
エクスポートしたデータを別のシートにコピーする際に形式を選択して貼り付けを指定して行列を入れ替えるにチェックをしてコピーすると
A1
A2
A3

B1
B2
B3

のようになります。そのシートのセルを移動させ
A1 B1 C1
A2 B2 C2
A3 B3 C3
・ ・ ・
・ ・ ・
のようにすれば良いと思います。
Accessで使用するようであればそのシートをAccessへインポートすれば良いと思いますが。

この回答への補足

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

試してみたのですが、
コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません。
と出てしまいました…。

それもそのはずなのです。
申し訳ありません、私の表現力が足りないようです。

細かく申しますと、フィールドが、
(No.)(1~30までの数字)(A1)(A2)(A3)…(A30)(B1)(B2)…(B30)

となっています。
No.は全部で4000ほど。
隣には、1~30までいずれかの数字が入ります。それによりA1以降のデータ数が変わります。

例えば、
(No.)(1~30までの数字)
がそれぞれ、
10  2  
としますと、

(No.)(1~30までの数字)(A1)(A2)(A3)…(A30)(B1)(B2)…(B30)
は、
   (A1)(A2)(A3)     (A30)(B1)(B2)(B3)
10,2, a , b ,   ,   ,  ・・・ ,  , a , b ,  ,

となり、A3~A30、B3~B30まではデータが入っていないのです。

最終的には、
(No.)(1~30までの数字)(A1)(A2)(A3)…(A30)(B1)(B2)…(B30)
を、

10,2,a,a, , , ,
10,2,b,b, , , ,

としたいのです。
その後、2の後ろに、2つのうち何番目ということで、
10,2,1,a,a, , , ,
10,2,2,b,b, , , ,
と入力していく予定ではあります。

とてもややこしくて申し訳ありません。
これでも、もし方法があるようでしたら、教えていただけるとありがたいです。

補足日時:2005/06/03 14:17
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
自分でも調べてがんばってすすめてみようと思います。

お礼日時:2005/06/03 15:02

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


おすすめ情報