http://www.geocities.jp/yukitsun001/q.xls
において、Sheet1の数値(C列)を、Sheet2の該当箇所へ展開したいのです。
簡単に実現する方法(関数を組む、マクロを組む)をご教授下さい。
イメージはわかりやすいと思うのですが、
例えばSheet1の10行目は「新宿、池袋、5.8」となっています。
これがSheet2のCX109とDE102のセルに5.8が入ればOK!(他も同様)
要するにマトリックス表に数値を展開したいということです。
もしかしたら、Sheet1とSheet2の地名にアンマッチがあるかもしれませんが、
それはエラーでかえしてくれて構いません。(自力でなんとかします)
他力本願ですが、なかなかExcelが使いこなせなく、皆様のアドバイスを
お待ちしております!!
Private Sub CommandButton1_Click()
Sheets("Sheet1").Select
For I = 1 To 397
N1$ = Cells(I, 1).Value
N2$ = Cells(I, 2).Value
N3$ = Cells(I, 3).Value
For j = 1 To 112
M1$ = Sheets("Sheet2").Cells(j + 2, 2).Value
If N1$ = M1$ Then
For k = 1 To 112
M2$ = Sheets("Sheet2").Cells(2, k + 2).Value
If N2$ = M2$ Then
Sheets("Sheet2").Cells(k + 2, j + 2).Value = N3$
Sheets("Sheet2").Cells(k + 2, j + 2).Value = N3$
End If
Next
End If
Next
Next
End Sub
これでいいかと思います
ただSheet2の書式設定がINT型になってるので
桁調整で小数1桁に調整する必要がありました
マクロです。
Sub Macro1()
’
’ Macro1 Macro
’ マクロ記録日 : 2004/7/23 ユーザー名 : ナナシ
’
’ Keyboard Shortcut: Ctrl+q
’
Dim a As Integer
Dim b As String
Dim c As String
Dim d As String
Dim a1 As Integer
Dim a2 As Integer
Dim k As Integer
For a = 1 To 397
b = Sheet1.Cells(a, 1)
c = Sheet1.Cells(a, 2)
d = Sheet1.Cells(a, 3)
k = 0
For a1 = 3 To 114
If Sheet2.Cells(2, a1) = b Then
For a2 = 3 To 114
If Sheet2.Cells(a2, 2) = c Then
Sheet2.Cells(a1, a2) = d
Exit For
End If
Next a2
End If
If Sheet2.Cells(2, a1) = c Then
For a2 = 3 To 114
If Sheet2.Cells(a2, 2) = b Then
Sheet2.Cells(a1, a2) = d
Exit For
End If
Next a2
End If
Next a1
Next a
End Sub
すごいっ!!!
これで完璧だと思います。
お二人の方、本当にありがとう!
がんばって自力でできるように勉強します!
ありがとう!(いつも本当に)
やってみたのですが、横軸と縦軸における地名の順番が同じなため、
マトリックスの対角線(C3からDJ114)を境に、数値は線対称に入る
と思うのですが、そうなっていないようでした。
でも、かなりいい感じです!
もう少し回答をお待ちします!!