• ベストアンサー

Accessのテーブル

普段は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に変換したほうがよいのでしょうか。 よい方法がありましたら教えていただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • dober-o
  • ベストアンサー率59% (260/439)
回答No.2

ややこしいですね ちなみに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個を別々のクエリとして保存しておきましょう) またこれは追加クエリなので 再計算する時は新しいテーブルの中身を一度削除しないと 古い結果が残ってしまうのでご注意を 参考になれば

white_lily01
質問者

お礼

お礼が遅くなり申し訳ありません。 ご回答ありがとうございました。 教えていただいた構文を参考に、AccessやSQLの本を読みながらですが何とか追加クエリが作成できました! まだ30のうち2までしか進んでいないのですが、忘れないようにメモしながら進めようと思います。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

こういう問題はアクセス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行のデータにします。 正方行列でなくてもよい。

white_lily01
質問者

お礼

お礼が遅くなり申し訳ありません。 ご回答ありがとうございました。 私自身、VBAはまったく使ったことがなかったのですが、プログラムを組む事ができるようになれば、今後生かす機会がとても多そうです。 まだ今はSQLでいっぱいになっている状態ですが、VBAの方法も調べていきたいと思います。 ありがとうございました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

テーブルのレコード自体を並び替えるということですよね。 ExcelにいったんエクスポートしてExcelで別のシートにコピーした方が早いかもしれません。 エクスポートしたデータを別のシートにコピーする際に形式を選択して貼り付けを指定して行列を入れ替えるにチェックをしてコピーすると A1 A2 A3 ・ B1 B2 B3 ・ のようになります。そのシートのセルを移動させ A1 B1 C1 A2 B2 C2 A3 B3 C3 ・ ・ ・ ・ ・ ・ のようにすれば良いと思います。 Accessで使用するようであればそのシートをAccessへインポートすれば良いと思いますが。

white_lily01
質問者

お礼

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

white_lily01
質問者

補足

ご回答ありがとうございます。 試してみたのですが、 コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません。 と出てしまいました…。 それもそのはずなのです。 申し訳ありません、私の表現力が足りないようです。 細かく申しますと、フィールドが、 (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, , , , と入力していく予定ではあります。 とてもややこしくて申し訳ありません。 これでも、もし方法があるようでしたら、教えていただけるとありがたいです。

関連するQ&A