- 締切済み
こういうデータの並べ替えってできるのでしょうか?
データベースについて疎いもので、どうしていいものか分かりません。 例えば、 |A|あ| | | | |B|あ|い| | | |C|あ|い|う| | |D|あ|い|う|え| というテーブルを |あ|A|B|C|D| |い|B|C|D| | |う|C|D| | | |え|D| | | | という風に並べ替えたりできないのでしょうか? データは全てテキスト型なので、クロス集計もできないのかな、 と思い、途方にくれております。どなたか、こんな方法がある、 というのがございましたら、ご教授願います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
<Test.txt> A,あ,,, B,あ,い,, C,あ,い,う, D,あ,い,う,え <TestII.txt> あ,A,B,C,D い,B,C,D, う,C,D,, え,D,,, Test.txt を基に TestII.txt を生成してみました。 CSVファイルを生成したと思えば、これで用は足りている筈です。 Private Sub コマンド0_Click() Dim I As Integer ' ループカウンター Dim J As Integer ' ループカウンター Dim N As Integer ' 配列数=行数 Dim M As Integer ' 区切り文字カウンター Dim Datas() As String ' 行単位のデータを格納する配列 Dim Keys() As String ' 新規に生成するテキストのキーを格納する配列 Dim NewData As String ' 新規に生成したデータ Dim NewDatas As String ' 新規に生成したデータの集合 Datas() = FileReadArray("C:\Temp\Test.txt") N = UBound(Datas()) ' ------------- ' Keys() 作成 ' ------------- ReDim Keys(N) As String For I = 0 To N Keys(I) = CutStr(Datas(I), ",", I + 2) Next I ' --------------- ' NewDatas 作成 ' --------------- For I = 0 To N NewData = Keys(I) For J = 0 To N If InStr(1, Datas(J), Keys(I), vbTextCompare) > 0 Then NewData = NewData & "," & CutStr(Datas(J), ",", 1) End If Next J M = CharCount(NewData, ",") NewDatas = NewDatas & NewData & String(4 - M, ",") & vbCrLf Next I FileWrite "C:\Temp\TestII.txt", NewDatas Message "終りました" End Sub プログラムコードは、ほとんど見たら理解できる水準かと思います。 ただ、このコードはコピペしても動作しません。 FileReadArray()、CutStr()、CharCount()、FileWrite()、Message 等の関数がAccess にはないからです。 あくまでもルーチンテストをして可能だということを証明したに過ぎません。 こんな感じでコードを書ける人は近辺にいませんか? 関数ソースを補足してもいいですが、OKWave での質疑の域を出ているのではないですかね。
- shorun
- ベストアンサー率42% (133/310)
エクセルのこととすれば、 上の表から下の表に変化する規則が想像しかねます。 このような並べ替え方法があれば、私も知りたいです。 エクセルにおける並び替えというよりは 入力し直さずにコピーして貼り付けるだけなら 初歩的ですが次のようにすれば、結果は得られます。 1.(上の表)4行目「あいうえ」を選択、右クリック、コピー、 2.(下の表)1行目の1列を選択、右クリック、形式を選択して貼り付け、行列を入れ替えるチェックをいれてOKクリック 3.(上の表)1列目「ABCD」を選択、右クリック、コピー、 4.(下の表)「あ」の右となりセルを選択、右クリック、形式を選択して貼り付け、行列を入れ替えるチェックをいれてOKクリック 5.(上の表)1列目「BCD」を選択、右クリック、コピー、 6.(下の表)「い」の右となりセルを選択、右クリック、形式を選択して貼り付け、行列を入れ替えるチェックをいれてOKクリック 7.(上の表)1列目「CD」を選択、右クリック、コピー、 8.(下の表)「う」の右となりセルを選択、右クリック、形式を選択して貼り付け、行列を入れ替えるチェックをいれてOKクリック 9.(上の表)1列目「D」を選択、右クリック、コピー、 10.(下の表)「え」の右となりセルを選択、右クリック、形式を選択して貼り付け、行列を入れ替えるチェックをいれてOKクリック
- fly_moon
- ベストアンサー率20% (213/1046)
データベースと申されてもいろいろありますが、Accessと理解して宜しいのでしょうか? 例に挙げていただいたテーブルのデータはデータベースとしてありえない構造になっています。上記の元になるデータテーブルは | A | あ | | B | あ | | C | あ | | D | あ | | B | い | | C | い | | D | い | | C | う | | D | う | | D | え | となると思うのですが。これのクロス集計クエリを元に作成した表だと思われるものが上記の表です。上記の2種類の表はどちらも同じように作成されたものだと思います。集計のフィールドが違い、加工の仕方が違うだけなので、元データから作るのであれば可能です。