ExcelのVBAモジュールの記述方法についてお伺い致します。


今、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初心者でして皆目わからず・・・。
どうぞよろしくお願い致します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/06/14 16:50:41
  • 終了:--

回答(7件)

id:ma2ma2 No.1

ma2ma2回答回数121ベストアンサー獲得回数02004/06/14 17:12:41

ポイント16pt

行列入替 ホントに出来るか検証してないけど^^;

右クリックで貼り付けるときに「形式を選択して・・・行列を入れ替える」ってことと同じことをしたいんですよね。

ループぐるぐる回しながらよりこっちがスマートかなぁ

id:miku1973

あ、参考にしてみますー!

2004/06/14 18:30:09
id:atsuosan No.2

atsuosan回答回数46ベストアンサー獲得回数02004/06/14 17:24:51

ポイント16pt

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値までというのがはっきり分からなかったので…。都合に応じてここの条件を書き換えて下さい。

id:miku1973

ありがとう!!!ちょっとやってみます!!

2004/06/14 18:35:14
id:cx20 No.3

cx20回答回数607ベストアンサー獲得回数1082004/06/14 17:44:36

ポイント16pt

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

id:miku1973

これもやってみますっ☆

2004/06/14 18:35:43
id:atom2 No.4

atom2回答回数4ベストアンサー獲得回数02004/06/14 18:17:48

ポイント16pt

URLはダミーです。

こんな方法ではどうでしょうか?

For y = 2 To 10: Cells(1, y) = Cells(y, 1): Next

id:miku1973

うーん、ちょっとダメそう・・・。

2004/06/14 18:36:44
id:ozonepapa No.5

いろは おぞね 回答回数288ベストアンサー獲得回数02004/06/14 18:18:25

ポイント16pt

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

id:miku1973

できました!!皆様ありがとー☆

2004/06/17 15:20:10

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 atom2 4 2 0 2004-06-14 18:22:51
2 satocchi 2 1 0 2004-06-14 19:33:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません