今、x軸としてB12から右のセルに向けて整数1、2、3、・・・が入っています。
また、y軸としてA13から下のセルに向けて整数1、2、3、・・・が入っています。
さて、座標(2、1):C13 の値を 座標(1、2):B14 に出力する
座標(3、1):D13 の値を 座標(1、3):B15 に出力する
・・・
座標(m、n) の値を 座標(n、m) に出力する
ということを実現するには、どのようにVBAを記述すればよいでしょうか?
(ただし、出力するのはx軸とy軸のMAX値まで)
たびたびの質問でごめんなさい!VBA初心者でして皆目わからず・・・。
どうぞよろしくお願い致します。
行列入替 ホントに出来るか検証してないけど^^;
右クリックで貼り付けるときに「形式を選択して・・・行列を入れ替える」ってことと同じことをしたいんですよね。
ループぐるぐる回しながらよりこっちがスマートかなぁ
Yahoo! JAPAN
Sub aaa()
Dim i As Integer
Dim j As Integer
i = 3
j = 13
Do While IsNull(Cells(12, i)) = False And Cells(12, i) > 0
If j > i + 10 Then
i = i + 1
j = 13
Else
Cells(i + 11, j - 11) = Cells(j, i)
j = j + 1
End If
Loop
j = 1
End Sub
Doの条件の部分は、12列目の軸に0が入る事は無いという前提で書いています。MAX値までというのがはっきり分からなかったので…。都合に応じてここの条件を書き換えて下さい。
ありがとう!!!ちょっとやってみます!!
http://www.hondarer-soft.com/cx/pukiwiki/pukiwiki.php?Memo%2F200...
[hondarer-soft] to [cx20.main.jp]
URL にソースを貼り付けておきました。
こんな感じでしょうか。
’ 縦軸と横軸を入れ替えるサンプル
Sub XYSwap()
Const X_MAX = 5 ’ X軸の最大値
Const Y_MAX = 5 ’ Y軸の最大値
Const X_BASE = 2 ’ X軸のベース
Const Y_BASE = 13 ’ Y軸のベース
Dim nX
Dim nY
Dim nValue
’ 横軸(X軸)のループ
For nX = 0 To X_MAX - 1
’ 縦軸(Y軸)のループ
For nY = nX To Y_MAX - 1
’ 座標をスワップ
nValue = Cells(nY + Y_BASE, nX + X_BASE)
Cells(nY + Y_BASE, nX + X_BASE) = Cells(nX + Y_BASE, nY + X_BASE)
Cells(nX + Y_BASE, nY + X_BASE) = nValue
Next
Next
End Sub
これもやってみますっ☆
URLはダミーです。
こんな方法ではどうでしょうか?
For y = 2 To 10: Cells(1, y) = Cells(y, 1): Next
うーん、ちょっとダメそう・・・。
URLはダミーです。
職場からのアクセスなので、コメントはありませんが、これでOKでは。
Sub sub1()
Dim m As Integer
Dim n As Integer
Dim m_max As Integer
Dim n_max As Integer
m_max = 5
n_max = 5
For m = 1 To m_max
For n = m + 1 To n_max
Cells(n + 12, m + 1) = Cells(m + 12, n + 1)
Next n
Next m
End Sub
できました!!皆様ありがとー☆
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | ![]() |
4回 | 2回 | 0回 | 2004-06-14 18:22:51 |
2 | ![]() |
2回 | 1回 | 0回 | 2004-06-14 19:33:11 |
あ、参考にしてみますー!