Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1641 / 13646 ツリー ←次へ | 前へ→

【72938】関数で変数を使用 初心者K 12/10/14(日) 3:48 質問[未読]
【72939】Re:関数で変数を使用 ウッシ 12/10/14(日) 8:18 回答[未読]
【72940】Re:関数で変数を使用 初心者K 12/10/14(日) 9:28 お礼[未読]
【72941】Re:関数で変数を使用 初心者K 12/10/14(日) 9:30 お礼[未読]

【72938】関数で変数を使用
質問  初心者K  - 12/10/14(日) 3:48 -

引用なし
パスワード
   VLOOKUP関数で引数のところを変数にしたいのですがわからなくて
こまっています。

For V = 5 To 59
  Set i = V - 3
    
      Sheets("データシート1").Cells(1, V).Activate
     ActiveCell.FormulaR1C1 = _
    "=IF(ISERROR(VLOOKUP(RC1,構成!R1C1:R200C80,i,0))=TRUE,""0"",VLOOKUP(RC1,構成!R1C1:R200C80,i,0))"


  Next

*変数iのところがそのままiで表示されてしまいます

【72939】Re:関数で変数を使用
回答  ウッシ  - 12/10/14(日) 8:18 -

引用なし
パスワード
   こんにちは

直すとしたら、

Sub test()
  Dim V As Long
  Dim i As Long

  For V = 5 To 59
    i = V - 3
    Sheets("データシート1").Cells(1, V).Activate
     ActiveCell.FormulaR1C1 = _
    "=IF(ISERROR(VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))" _
      & "=TRUE,""0"",VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))"
  Next
End Sub

と、変数を文字列に「&」で連結します。
ただ、VBA的には複数範囲に数式をセットする場合は一気にするのがいいと思います。

Sub test1()
  Dim V As Range
  Dim s As String
  
  Set V = Worksheets("データシート1").Range("E1").Resize(, 55)
  s = Worksheets("構成").Range("A1:CE200").Address(1, 1, True, 1)
  
  With V
     .FormulaR1C1 = _
      "=IF(ISERROR(VLOOKUP(RC1," & s & ",COLUMN()-3,0))" _
        & "=TRUE,""0"",VLOOKUP(RC1," & s & ",COLUMN()-3,0))"
'    .Value = .Value
  End With
End Sub

【72940】Re:関数で変数を使用
お礼  初心者K  - 12/10/14(日) 9:28 -

引用なし
パスワード
   ▼ウッシ さん:
>こんにちは
>
>直すとしたら、
>
>Sub test()
>  Dim V As Long
>  Dim i As Long
>
>  For V = 5 To 59
>    i = V - 3
>    Sheets("データシート1").Cells(1, V).Activate
>     ActiveCell.FormulaR1C1 = _
>    "=IF(ISERROR(VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))" _
>      & "=TRUE,""0"",VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))"
>  Next
>End Sub
>
>と、変数を文字列に「&」で連結します。
>ただ、VBA的には複数範囲に数式をセットする場合は一気にするのがいいと思います。
>
>Sub test1()
>  Dim V As Range
>  Dim s As String
>  
>  Set V = Worksheets("データシート1").Range("E1").Resize(, 55)
>  s = Worksheets("構成").Range("A1:CE200").Address(1, 1, True, 1)
>  
>  With V
>     .FormulaR1C1 = _
>      "=IF(ISERROR(VLOOKUP(RC1," & s & ",COLUMN()-3,0))" _
>        & "=TRUE,""0"",VLOOKUP(RC1," & s & ",COLUMN()-3,0))"
>'    .Value = .Value
>  End With
>End Sub
こちらのほうがFor〜Next文より早くできましたほんとにありがとうございました。イメージどうりです勉強になりました。

【72941】Re:関数で変数を使用
お礼  初心者K  - 12/10/14(日) 9:30 -

引用なし
パスワード
   ▼ウッシ さん:
>こんにちは
>
>直すとしたら、
>
>Sub test()
>  Dim V As Long
>  Dim i As Long
>
>  For V = 5 To 59
>    i = V - 3
>    Sheets("データシート1").Cells(1, V).Activate
>     ActiveCell.FormulaR1C1 = _
>    "=IF(ISERROR(VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))" _
>      & "=TRUE,""0"",VLOOKUP(RC1,構成!R1C1:R200C80," & i & ",0))"
>  Next
>End Sub
>
>と、変数を文字列に「&」で連結します。
>ただ、VBA的には複数範囲に数式をセットする場合は一気にするのがいいと思います。
>
>Sub test1()
>  Dim V As Range
>  Dim s As String
>  
>  Set V = Worksheets("データシート1").Range("E1").Resize(, 55)
>  s = Worksheets("構成").Range("A1:CE200").Address(1, 1, True, 1)
>  
>  With V
>     .FormulaR1C1 = _
>      "=IF(ISERROR(VLOOKUP(RC1," & s & ",COLUMN()-3,0))" _
>        & "=TRUE,""0"",VLOOKUP(RC1," & s & ",COLUMN()-3,0))"
>'    .Value = .Value
>  End With
>End Sub
イメージどうりになりましたありがとうございました。

1641 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free