過去ログ

                                Page      82
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼最も早い時間の該当者を選択するには?  日付 02/9/8(日) 12:34
   ┗Re:最も早い時間の該当者を選択するには?  Nakamura 02/9/8(日) 13:19
      ┗Re:最も早い時間の該当者を選択するには?  日付 02/9/9(月) 17:48
         ┗Re:最も早い時間の該当者を選択するには?  Nakamura 02/9/9(月) 22:53
            ┗Re:最も早い時間の該当者を選択するには?  日付 02/9/12(木) 15:52
               ┗Re:最も早い時間の該当者を選択するには?  Nakamura 02/9/12(木) 22:01
                  ┗問題のブックは動作したのですが・・・  日付 02/9/13(金) 18:39
                     ┗Re:問題のブックは動作したのですが・・・  Nakamura 02/9/13(金) 23:14
                        ┗解決しました。感謝。  日付 02/9/14(土) 21:37

 ───────────────────────────────────────
 ■題名 : 最も早い時間の該当者を選択するには?
 ■名前 : 日付
 ■日付 : 02/9/8(日) 12:34
 -------------------------------------------------------------------------
   以下のようなデータがあり、最も早い時間の該当者のセルを
選択したいのですが、B列でオートフィルタをするやり方だと、
抽出状態になり、他のデータが隠れてしまう事は避けたいのです。
データ全体が見える形のまま、該当者のセルをアクティブセルに
する方法はないでしょうか?

A    B
佐藤薫 8/29 6:00 PM
山口真 8/30 12:00 PM
横山隆 8/25 10:00 AM
笹山豊 8/28 11:00 AM
加藤実 8/27 4:00 PM
  .     .
  .     .

この例では、横山隆をアクティブセルにしたいのですが・・・。
 ───────────────────────────────────────  ■題名 : Re:最も早い時間の該当者を選択するには?  ■名前 : Nakamura  ■日付 : 02/9/8(日) 13:19  -------------------------------------------------------------------------
   こんにちは

B列の表示形式を日付としてこんな感じです。

Sub test()

  Dim fd As Date
  Dim frg As Range
  
  fd = WorksheetFunction.Min(Columns("B"))
  
  Set frg = Columns("B").Find(fd)
  
  If Not frg Is Nothing Then
    
    frg.Offset(, -1).Activate
    
  End If

End Sub

それでは
 ───────────────────────────────────────  ■題名 : Re:最も早い時間の該当者を選択するには?  ■名前 : 日付  ■日付 : 02/9/9(月) 17:48  -------------------------------------------------------------------------
   Nakamura さん、こんにちは。

教えて頂いたコードでは、何も起こらなかったです。
他の参照等が必要でしょうか?
すみません、お手数かけます。
 ───────────────────────────────────────  ■題名 : Re:最も早い時間の該当者を選択するには?  ■名前 : Nakamura  ■日付 : 02/9/9(月) 22:53  -------------------------------------------------------------------------
   こんばんは

特に参照設定の追加は必要有りません。
今回シート指定が無いので、シートに関する記述をしておりませんが、
コードを該当シートモジュールに記述するか、標準モジュールの場合は
該当シートをアクティブにして実行してみて下さい。
また、B列の表示形式はどうなっているでしょうか?文字列の場合はうまく行きません。
文字列なら、コードを考えて見ます。

それでは
 ───────────────────────────────────────  ■題名 : Re:最も早い時間の該当者を選択するには?  ■名前 : 日付  ■日付 : 02/9/12(木) 15:52  -------------------------------------------------------------------------
   Nakamura さん、ありがとうございます。
返事が遅くなり失礼しました。
対象ブックB列は文字列でした。自分で他のブックでテスト
して、それに気がつきました。
 ───────────────────────────────────────  ■題名 : Re:最も早い時間の該当者を選択するには?  ■名前 : Nakamura  ■日付 : 02/9/12(木) 22:01  -------------------------------------------------------------------------
   ▼日付 さん:
>Nakamura さん、ありがとうございます。
>返事が遅くなり失礼しました。
>対象ブックB列は文字列でした。自分で他のブックでテスト
>して、それに気がつきました。

こんばんは
文字列になっているB列のデータを日付データに変換します。
年のデータが無いのでシステムクロックの年とします。
つまり2002年です。

Sub test()

  Dim fd As Date
  Dim frg As Range
  Dim rg As Range
  
  For Each rg In Range("B1", Range("B65536").End(xlUp).Address)
  
    If IsDate(rg) Then
  
      rg.NumberFormatLocal = "m/d h:mm AM/PM"
      rg.Value = DateValue(rg.Text) + TimeValue(rg.Text)
      
    End If
      
  Next
  
  fd = WorksheetFunction.Min(Columns("B"))
 
  Set frg = Columns("B").Find(fd)
 
  If Not frg Is Nothing Then
  
    frg.Offset(, -1).Activate
  
  End If

End Sub

それでは
 ───────────────────────────────────────  ■題名 : 問題のブックは動作したのですが・・・  ■名前 : 日付  ■日付 : 02/9/13(金) 18:39  -------------------------------------------------------------------------
   Nakamura さん、
教えて頂いたコードで動作しました。
お蔭様で大変楽になりました。
ありがとうございます。

他のブックにも、教えていただいたコードを応用できると考えたのですが、
データ形式が、"m/d (aaa) h:mm AM/PM" 形式の文字列で、
"(aaa)" が中に含まれているため、

rg.Value = DateValue(rg.Text) + TimeValue(rg.Text)

で、止まります。元データの "m/d (aaa) h:mm AM/PM" 
を崩さずに、動作させたいのですが、"(aaa)"の処理がわかりません。
何度も申し訳ありません。
 ───────────────────────────────────────  ■題名 : Re:問題のブックは動作したのですが・・・  ■名前 : Nakamura  ■日付 : 02/9/13(金) 23:14  -------------------------------------------------------------------------
   こんばんは

こんな感じでどうでしょう?

Sub test2()

  Dim fd As Date
  Dim frg As Range
  Dim rg As Range
  Dim rgday As String
  Dim rgtime As String
  
  For Each rg In Range("B1", Range("B65536").End(xlUp).Address)
    
    With rg
      
      .Value = StrConv(.Text, vbNarrow)
      rgday = Left(.Text, InStr(1, .Text, "(") - 1)
      rgtime = Right(.Text, Len(.Text) - InStr(1, .Text, ")"))
      
      If IsDate(rgday) And IsDate(rgtime) Then
  
        .NumberFormatLocal = "m/d (aaa) h:mm AM/PM"
        .Value = DateValue(rgday) + TimeValue(rgtime)
      
      End If
      
    End With
  
  Next
  
  fd = WorksheetFunction.Min(Columns("B"))
 
  Set frg = Columns("B").Find(fd)
 
  If Not frg Is Nothing Then
  
    frg.Offset(, -1).Activate
  
  End If
  
  Set frg = Nothing

End Sub

それと、前回のコードの最後にも

Set frg = Nothing

を追加しておいて下さい。

それでは
 ───────────────────────────────────────  ■題名 : 解決しました。感謝。  ■名前 : 日付  ■日付 : 02/9/14(土) 21:37  -------------------------------------------------------------------------
   Nakamuraさん、他のブックでも動作しました。
応用が広がり感謝します。
本当にありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 82