Excel VBA質問箱 IV

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

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


2424 / 13645 ツリー ←次へ | 前へ→

【68111】年数からの識別 ゆき 11/2/2(水) 23:39 質問[未読]
【68112】Re:年数からの識別 [名前なし] 11/2/3(木) 6:21 回答[未読]
【68117】Re:年数からの識別 UO3 11/2/3(木) 10:25 回答[未読]

【68111】年数からの識別
質問  ゆき  - 11/2/2(水) 23:39 -

引用なし
パスワード
   Excel表に、下記のように金額と年数を表示させています。
そこで、年数が2010/4/1〜2011/3/31までの年数に関しては、
その年数の行の金額を判定に表示させて、それ以外の年数に
関しては、判定欄に"-"表示させたいです。

何かよい方法はないでしょうか。
よろしくお願い致します。


(金額)  (年数)   (判定)
1,000   1983/5/31
2,000   1990/8/31
1,500   2010/12/31
3,000   2011/5/31
 .      .
 .      .
 .      .

【68112】Re:年数からの識別
回答  [名前なし]  - 11/2/3(木) 6:21 -

引用なし
パスワード
   ▼ゆき さん:

以下のような式を判定セルに入れ最後の行までオートフィルしてもOKかと。

=IF(VALUE(B1)>=VALUE("2010/4/1"),IF(VALUE(B1)<=VALUE("2011/3/31"),A1,"-"),"-")

【68117】Re:年数からの識別
回答  UO3  - 11/2/3(木) 10:25 -

引用なし
パスワード
   ▼ゆき さん:

もしVBAで対応されるなら。
Sample1は「名前なし」さんの式を埋め込んで利用する方法。
Sample2は「普通のループ処理」です。
1行目がタイトル行、A列が金額、B列が日付け、判定列はC列。

Sub Sample1()
  With Sheets("Sheet1") '<== 実際のシート名に
   If .Range("B2").Value = "" Then
     MsgBox "データがありません"
   Else
     With .Cells(2, "C").Resize(.Range("B" & .Rows.Count).End(xlUp).Row - 1)
      .Formula = _
        "=IF(VALUE(B2)>=VALUE(""2010/4/1""),IF(VALUE(B2)<=VALUE(""2011/3/31""),A2,""-""),""-"")"
      .Value = .Value
     End With
   End If
  End With
End Sub

Sub Sample2()
  Dim c As Range
  Dim dF As Date, dT As Date
  dF = "2010/4/1"
  dT = "2011/3/31"
  With Sheets("Sheet1") '<== 実際のシート名に
   If .Range("B2").Value = "" Then
     MsgBox "データがありません"
   Else
     For Each c In .Cells(2, "B").Resize(.Range("B" & .Rows.Count).End(xlUp).Row - 1)
      If c.Value >= dF And c.Value <= dT Then
        c.Offset(, 1).Value = c.Offset(, -1).Value
      Else
        c.Offset(, 1).Value = "-"
      End If
     Next
   End If
  End With
End Sub

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