Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Excel 2016)
別シートのセル値取得方法について
投稿日時: 18/05/29 11:25:29
投稿者: aiueoka

初めまして。
VBAを勉強中です。
 
以下の方法をマクロで行いたいのですが、
どのように組めばいいでしょうか。
 
1.sheet1「A3」にsheet2「B5」のセルを取得
2.sheet1が「A3」→「B3」に移ると取得する値はsheet2「B5」→「D5」になる。(※sheet2は2つずつずれる)
 
よろしくお願いします。

回答
投稿日時: 18/05/29 12:03:06
投稿者: mattuwan44

例えばこんな感じでいかがでしょうか?
 
Sub test()
    Dim i As Long
    Dim j As Long
    Dim rngFrom As Range
    Dim rngTo As Range
     
    Set rngFrom = Sheets("Sheet1").Range("A3")
    Set rngTo = Sheets("Sheet2").Range("B5")
     
    j = 1
    For i = 1 To 5
        Debug.Print "From:=", rngFrom.Cells(1, i).Address(False, False)
        Debug.Print "To:=", rngTo.Cells(1, j).Address(False, False)
        j = j + 2
    Next
End Sub

回答
投稿日時: 18/05/29 22:38:04
投稿者: WinArrow
投稿者のウェブサイトに移動

まず、アルゴリズムを考えてみましょう
 
n(送り側)m(受け側)
1 1
2 3
3 5
4 7
 
という形になります。
 
この法則はを計算式にすると
m = n * 2 - 1
となります。
この考えをセルのアドレスに当てはめるとよいでしょう。
 
↓は、セルA2〜F2をセルD5〜1つ置き右に「値」を複写する例です。
Dim n As Long, m As Long
For n = 1 To 7
    m = n * 2 - 1
    Cells(5, "D").Offset(, m - 1).Value = Cells(2, "A").Offset(, n - 1).Value
Next
 
 

投稿日時: 18/05/30 17:06:37
投稿者: aiueoka

ありがとうございます!解決しました!