|
▼ゆう さん:
こんばんは。
Macで確認しておりません
(というより、持ってませんし、正直、わかりません)。
>1点だけ問題点があったのですが
>C行でセルの文字列のデータで全角スペースが入るモノがC行に残ってしましました。具体的に書きますと移動を2回するものだと
>C行="A B"だとするとC1には問題なく"A B"がきますがM1には"B"だけがいどうされC行の下には"A"だけが残っている感じです。
>こんな表現でわかっていただけるでしょうか?
意味はわかりました。ただ、↑の現象が確認できません・・。
こんなデータでテストしましたが、
A B C ・・・・・・J
1 項目1 項目2 項目3 ・・・・・項目10
2 A B A B A B ・・・ A B
3 A B A B A B ・・・ A B
4 A B A B A B ・・・ A B
5 A B A B A B ・・・ A B
6 A B A B A B ・・・ A B
・
・
・
・
16 A B A B A B ・・・ A B
というようにセルA1〜J10に項目名、セルA2〜J16まで、全て「A B」
というデータを入れて、
プロシジャー「行2移動」を実行させましたが、
正常に配置されています。
不具合が発生する最も簡単なデータ例を記述していただければ
こちらでも確認します。
>もしお時間があれば簡単なコメントを入れていただければ
>もう少し次につなげられると思います。
Sub 移動(Keynum As Long)
For idx = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells((idx - 2) \ Keynum + 1, ((idx - 2) Mod Keynum) * 10 + 1), _
Cells((idx - 2) \ Keynum + 1, ((idx - 2) Mod Keynum) * 10 + 10)).Value = _
Range(Cells(idx, 1), Cells(idx, 10)).Value
Range(Cells(idx, 1), Cells(idx, 10)).Value = ""
Next
End Sub
↑これの内容ですよね?
2行づつ移動する場合を考えてみます。
A列にあるセルがどこに移動すればよいかを考えます。
元の行 新しい行 新しい列
2 1 1(A列)
3 1 11(K列)
4 2 1
5 2 11
・
・
2行目のセルA2にあったデータは、1行目の1列(A列)に移動する。
3行目のセルA3にあったデータは、1行目の11列(K列)に移動する。
ってことは、元の行数から何らかの計算式で移動する行と列が導き出されれば
OKですよね?
fx(2)=1、fx(3)=1、fx(4)=2、fx(5)=2のような新しい行位置を算出する計算式と
gx(2)=1、gx(3)=11、gx(4)=1、gx(5)=11のような新しい列位置を算出する計算式。
新しい行=(元の行-2)/2の整数部 + 1
新しい列=(元の行-2)/2の余り * 10 + 1
で、うえの表のとおりになりますよね?
8行づつ移動する場合も表を作ってみて下さい(省略しますが)
新しい行=(元の行-2)/8の整数部 + 1
新しい列=(元の行-2)/8の余り * 10 + 1
となると思います。
上記の式を元のデータのA列の移動セルとするようにVBAで記述すると
Cells((idx - 2) \ Keynum + 1, ((idx - 2) Mod Keynum) * 10 + 1)
のようになります(不具合があるから心配だけど)。
idx・・・・元の行
Keynum・・何行づつ移動するかという行数
移動するコードがFor〜Nextを用いて、2行目から、
A列の終わりまで繰り返されています。
異常(シャレ)ですが、わかっていただけますか?
不具合の例題データ、是非教えて下さい。
|
|