Excel VBA質問箱 IV

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

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


10955 / 13644 ツリー ←次へ | 前へ→

【18932】うまく並び替えしたいのですが・・・ うさぎ 04/10/17(日) 0:38 質問[未読]
【18933】Re:うまく並び替えしたいのですが・・・ ちゃっぴ 04/10/17(日) 0:44 発言[未読]
【18934】Re:うまく並び替えしたいのですが・・・ うさぎ 04/10/17(日) 0:55 質問[未読]
【18935】Re:うまく並び替えしたいのですが・・・ [名前なし] 04/10/17(日) 1:25 発言[未読]
【18936】Re:うまく並び替えしたいのですが・・・ うさぎ 04/10/17(日) 1:48 質問[未読]
【18937】Re:うまく並び替えしたいのですが・・・ うさぎ 04/10/17(日) 1:59 質問[未読]
【18941】Re:うまく並び替えしたいのですが・・・ カド 04/10/17(日) 10:08 発言[未読]
【18942】Re:うまく並び替えしたいのですが・・・ うさぎ 04/10/17(日) 10:23 質問[未読]
【18960】Re:うまく並び替えしたいのですが・・・ カド 04/10/17(日) 20:50 回答[未読]
【18947】Re:うまく並び替えしたいのですが・・・ Kein 04/10/17(日) 12:58 回答[未読]

【18932】うまく並び替えしたいのですが・・・
質問  うさぎ  - 04/10/17(日) 0:38 -

引用なし
パスワード
   どうも、はじめまして。
51 42 35 41 ・・・・・・
36 50 41 32 ・・・・・・
21 33・・・・・・・・・・
・・・・・・・・・・・・
・・・・・・・・・・・・
36 40 39 38 ・・・・・・
という400*400の文字列があって、それを、
1 1 51
1 2 36
1 3 21
・・・
・・・
・・・
1 400 36
のような文字列にし、次に2列目について

1 1 42
1 2 50
1 3 33
・・・
・・・
・・・
1 400 40
のようにする(つまり、1列目をすべて1,2列目は1〜400、3れるめは元の行列のものを使う。
これを400列目まで同じように並べ替えたいのですが、このような作業をするマクロはどのように作ればいいのでしょうか?
マクロ初心者で、困っています。
説明のしかたも悪いかもしれませんが、どうかよろしくお願いします。

【18933】Re:うまく並び替えしたいのですが・・・
発言  ちゃっぴ  - 04/10/17(日) 0:44 -

引用なし
パスワード
   >説明のしかたも悪いかもしれませんが、どうかよろしくお願いします。

はっきりいいまして、説明の仕方が悪いです。
最初に提示されたデータと、ソート後のデータの内容は
一致するよう気をつけてください。
(この場合、ソート前とソート後でサンプルデータが一致していません。)

勝手な想像ですが、ソートをKey3まで使用して並べ替えればいいのでは?

わからなければ、マクロ記録をお試しください。

【18934】Re:うまく並び替えしたいのですが・・・
質問  うさぎ  - 04/10/17(日) 0:55 -

引用なし
パスワード
   ▼ちゃっぴ さん:
>>説明のしかたも悪いかもしれませんが、どうかよろしくお願いします。
>
>はっきりいいまして、説明の仕方が悪いです。
>最初に提示されたデータと、ソート後のデータの内容は
>一致するよう気をつけてください。
>(この場合、ソート前とソート後でサンプルデータが一致していません。)
>
>勝手な想像ですが、ソートをKey3まで使用して並べ替えればいいのでは?
>
>わからなければ、マクロ記録をお試しください。

たしかに説明のしかたが悪いですね・・・。
えっと、いいなおしますと、
51 42 35 41
36 50 41 32
・ ・ ・ ・
・ ・ ・ ・
・ ・ ・ ・
36 40 39 38
というサンプルデータがあって、ここから1列目の
51
36



36
を取り出し、
1 1
1 2
1 3
・・
・・
・・
1 400
というデータ(1列目はすべて1、2列目は1〜400まで1づつ増加)とくっつけて
1 1 51
1 2 36
1 3 21
・・・
・・・
・・・
1 400 36
というデータにします。
次にサンプルデータの2列目の
42
50



40
を取り出し、
1 1
1 2
1 3
・・
・・
・・
1 400
というデータとくっつけて
1 1 42
1 2 50
1 3 33
・・・
・・・
・・・
1 400 40
という風にする、というのを3列目、4列目・・・・とやっていきたいのです。
これで少しはわかりやすくなったでしょうか?
文章力なくてすいません。
よろしくお願いします。

【18935】Re:うまく並び替えしたいのですが・・・
発言  [名前なし]  - 04/10/17(日) 1:25 -

引用なし
パスワード
   ▼うさぎ さん:
お聞きしたいことがあるのですが、そのサンプルデータはどこに入力されているんですか?
そしてどこにどうやって出力したいのですか?

どのような形であろうと、1つのシートに出力するのは無理だと思いまして。

【18936】Re:うまく並び替えしたいのですが・・・
質問  うさぎ  - 04/10/17(日) 1:48 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼うさぎ さん:
>お聞きしたいことがあるのですが、そのサンプルデータはどこに入力されているんですか?
>そしてどこにどうやって出力したいのですか?
>
>どのような形であろうと、1つのシートに出力するのは無理だと思いまして。
あ、すいません。
サンプルデータはexcelに入力されています。
出力するのは一つのシートに一かたまりづつで、何個かのシートにわけてもいいです。
あるいはテキストに出力する方法があるのならばそういう方法でもいいです。
うまく説明できたか不安ですが、そういうことです。

【18937】Re:うまく並び替えしたいのですが・・・
質問  うさぎ  - 04/10/17(日) 1:59 -

引用なし
パスワード
   すいません、上の説明間違ってました。
正確には、

51 42 35 41
36 50 41 32
・ ・ ・ ・
・ ・ ・ ・
・ ・ ・ ・
36 40 39 38
というサンプルデータがあって、ここから1列目の
51
36



36
を取り出し、
1 1
1 2
1 3
・・
・・
・・
1 400
というデータ、(2列目は1〜400まで1づつ増加)とくっつけて
1 1 51
1 2 36
・・・
・・・
・・・
1 400 36
というデータにします。
次にサンプルデータの2列目の
42
50



40
を取り出し、
2 1
2 2
2 3
・・
・・
・・
2 400
というデータとくっつけて
2 1 42
2 2 50
・・・
・・・
・・・
2 400 40
という風にする、というのをサンプルの3列目、4列目・・・・とやっていきたいのです。
つまり、出力データの一列目はサンプルデータの列に対応するということです(またまたわかりにくい説明ですいません)。
ちなみに3列目は
3 1 35
3 2 41
・・・
・・・
・・・
3 400 39
になります。

【18941】Re:うまく並び替えしたいのですが・・・
発言  カド  - 04/10/17(日) 10:08 -

引用なし
パスワード
   256列しかないので出来ないと思いますよ。

>51 42 35 41
ちなみにこれは4つのセルに書かれているのですか?
それとも、1つのセルに書かれているのですか?

【18942】Re:うまく並び替えしたいのですが・・・
質問  うさぎ  - 04/10/17(日) 10:23 -

引用なし
パスワード
   ▼カド さん:
>256列しかないので出来ないと思いますよ。
>
>>51 42 35 41
>ちなみにこれは4つのセルに書かれているのですか?
>それとも、1つのセルに書かれているのですか?

あ、それは4つのセルにかかれています。
一つのシートにひとつづつでいいのですが、無理でしょうか(つまり、400個のシートを使う)?

【18947】Re:うまく並び替えしたいのですが・・・
回答  Kein  - 04/10/17(日) 12:58 -

引用なし
パスワード
   400列というのは、はっきり間違いということです。256列が最大ですから。
で、1行目を見て、入力されている最大列までを処理するとすれば

Sub Test()
  Dim i As Long, j As Long

  For j = 1 To Range("A1").End(xlToRight).Column
   For i = 1 To Cells(65536, j).End(xlUp).Row
     With Cells(i, j)
      .Value = j & " " & i & " " & .Value
     End With
   Next i
  Next j
End Sub

ぐらいで、どうでしょーか ?

【18960】Re:うまく並び替えしたいのですが・・・
回答  カド  - 04/10/17(日) 20:50 -

引用なし
パスワード
   これで、希望通りのことはできますが・・・

Sub vvv()
For j = 1 To Range("A1").End(xlToRight).Column
  Sheet1.Select’ここにデータがあるとして
  Range(Cells(1, j), Cells(65536, j)).Select
  Selection.Copy
  Sheets.Add
  ActiveSheet.Paste

  For i = 1 To Cells(65536, 1).End(xlUp).Row
    Cells(i, 1).Value = j & " " & i & " " & Cells(i, 1).Value
  Next i
Next j

End Sub

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