Excel VBA質問箱 IV

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

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


46696 / 76732 ←次へ | 前へ→

【35004】Re:近似値を求める。
回答  [名前なし]  - 06/2/18(土) 0:56 -

引用なし
パスワード
   以下のように、単純に1つずつ比較していくだけでいいのでは?

Type 項目
  時間 As Date
  値 As Long
End Type

Sub Macro1()
Const 計算結果 As Long = 280
Dim 配列() As 項目
Dim i As Long
Dim 検索結果 As Long

  ReDim 配列(2)
  配列(0).時間 = TimeValue("13:00"): 配列(0).値 = 100
  配列(1).時間 = TimeValue("12:00"): 配列(1).値 = 450
  配列(2).時間 = TimeValue("9:00"): 配列(2).値 = 300

'  ReDim 配列(2000)
'
'  Randomize
'
'  For i = 0 To UBound(配列)
'    配列(i).時間 = Rnd()
'    Do
'      配列(i).値 = Rnd() * 計算結果 * 2
'    Loop Until 配列(i).値 <> 計算結果
'  Next

  MsgBox "検索を開始します。", vbInformation

  For i = 0 To UBound(配列)
    If Abs(配列(i).値 - 計算結果) < Abs(配列(検索結果).値 - 計算結果) Then
      検索結果 = i
      If 配列(i).値 = 計算結果 Then Exit For
    End If
  Next
  
  MsgBox 計算結果 & " に最も近いのは配列(" & 検索結果 & ")の " & _
      配列(検索結果).値 & " で、時間は " & Format(配列(検索結果).時間, "h:mm") & " です。"
End Sub

1 hits

【34939】近似値を求める。 ゼロイオン 06/2/16(木) 14:40 質問
【34943】Re:近似値を求める。 Kein 06/2/16(木) 15:50 回答
【34960】Re:近似値を求める。 ゼロイオン 06/2/16(木) 23:01 質問
【35004】Re:近似値を求める。 [名前なし] 06/2/18(土) 0:56 回答
【35043】Re:近似値を求める。 ゼロイオン 06/2/20(月) 2:54 お礼

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