エクセルでVBA
■ このスレッドは過去ログ倉庫に格納されています
0001ベテランへの道
NGNG行と列を対角線にそって
反対にするプログラムを
どなたか教えてくれませんか?
0002名無しさん@お腹いっぱい。
NGNGもうどうしようもないんだろうね。
0003電化製品
NGNG’間違ってたらごめんちゃい。
private sub book()
Dim Gyou(10@`1000) as String ’*列(A〜Z任意、カウント)
Dim i as Integer ’カウンター(VBは宣言する必要はない、そのときバリアント型
Dim j as Integer '行を数える
j=0
for i=1 to 1000'(もしくは、行の長さを取得する値をここに入れて下さい。)
Gyou(0@`i)=Worksheets("sheet1").Range("A" & i) 'Aiのセルテキスト取得
'0をAにした。
if Gyou(i) = "" then :Exit for'空っぽなら終了。Aだけでなく基準にする列に注目すればよい
Gyou(1@`i)=Worksheets("sheet1").Range("B" & i)
Gyou(2@`i)=Worksheets("sheet1").Range("C" & i)
Gyou(3@`i)=Worksheets("sheet1").Range("D" & i) '列を取得E、F・・以降は勝手にかいてね
j=j+1
next i
'ここまでで、A、B、C・・のそれぞれの行を取得できました。
’後は行を列に直すだけです。
'jには行の長さが入っています。
’A〜Zを越える場合、アスキーコードかなにかで、連番になっているので
’それをここに書いて、A〜(任意の無限の長さ)に対応することも可能。
’つーかここまで書いていて、行の長さは軽くA〜Zを越えるなぁ
’アスキーコード chr(65)=Aなわけ
Dim Box as String
Dim k(1) as integer
i=0:k(0)=0:k(1)=0
for i=1 to j
'A-Zは25?なので
if (65 + k(0)) > 90 then:k(0)=0:k(1)=k(1)+1'にリセット
if k(1)=0 then
Box=chr(65 + k)
else
Box=chr(65 + k) & k(1) 'A...Z@`A1....Z1@`A2...と具合だったよね?
end
Worksheets("sheet1").Range(Box & i)=Gyou(0@`i) ’行を列に直していく
Worksheets("sheet1").Range(Box & i)=Gyou(1@`i)
Worksheets("sheet1").Range(Box & i)=Gyou(2@`i)
'この部分もGyou(0@`1)〜Gyou(*@`i)まで宣言できるようにすればベストかも
k(0)=k(0)+1
Next
end sub
’実行してないのでどういう動作するか分りません
’エラーでまくりと思います。
’マクロの記録?の方法が手動であるみたいなので
’慣れていない場合は、そちらを試してみては?
’
0004名無しさん@お腹いっぱい。
NGNG行列を入れかえてコピーつーのがあるだろうが。
0005名無しさん@お腹いっぱい。
NGNGMS用語はわからんぜ。
■ このスレッドは過去ログ倉庫に格納されています