Excel VBA質問箱 IV

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

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


70262 / 76738 ←次へ | 前へ→

【10986】質問と別解
回答  Hirofumi E-MAIL  - 04/2/21(土) 21:40 -

引用なし
パスワード
   これ、どちらが正解なのかな?

>    ElseIf Cells(1, 1) > x Then
>    y = 2
>    GoTo st2

    ElseIf Cells(1, 1) > x Then
    y = 1
    GoTo st2

もし、y = 1 が正しいなら前のコードの以下の部分を修正して下さい

    If IsError(vntResult(i, 1)) Then
      vntResult(i, 1) = 2
    Else



    If IsError(vntResult(i, 1)) Then
      vntResult(i, 1) = 1
    Else

にして下さい

また、質問のコードに近い形でコードを書くといかの様に成ります
比較元(B列)、比較先(A列)を配列に取り込み、結果も配列に書き出して
シートに出力しています

Public Sub Test4()

  Dim i As Long
  Dim j As Long
  Dim vntScope As Variant
  Dim vntKeys As Variant
  Dim vntResult As Variant
  
  vntScope = Range(Cells(1, "A"), _
          Cells(65536, "A").End(xlUp)).Value
  vntKeys = Range(Cells(1, "B"), _
          Cells(65536, "B").End(xlUp)).Value
  ReDim vntResult(1 To UBound(vntKeys, 1), 1 To 1)
  
  For i = 1 To UBound(vntKeys, 1)
    For j = 1 To UBound(vntScope, 1) - 1
      If vntScope(j, 1) < vntKeys(i, 1) Then
        If vntKeys(i, 1) <= vntScope(j + 1, 1) Then
          vntResult(i, 1) = j + 1
          Exit For
        End If
      End If
    Next j
    If vntResult(i, 1) = "" Then
      If vntScope(1, 1) >= vntKeys(i, 1) Then
        vntResult(i, 1) = 1
'        vntResult(i, 1) = 2 'どちらが正解?
      Else
        vntResult(i, 1) = UBound(vntScope, 1)
      End If
    End If
  Next i
  
  Cells(1, "C").Resize(UBound(vntKeys, 1)).Value = vntResult
  
End Sub

0 hits

【10968】処理速度の向上について K.C 04/2/19(木) 23:17 質問
【10969】Re:処理速度の向上について りん 04/2/20(金) 7:49 発言
【10970】Re:処理速度の向上について ichinose 04/2/20(金) 8:02 発言
【10982】Re:処理速度の向上について Hirofumi 04/2/21(土) 17:57 回答
【10986】質問と別解 Hirofumi 04/2/21(土) 21:40 回答
【10988】Re:処理速度の向上について K.C 04/2/22(日) 0:46 お礼

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