人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL関数について質問です。

現在以下のような条件のエクセルデータがあります。

http://oskuni7.sakura.ne.jp/hatena//question22/question22.htm

この状態のエクセルデータを

★シート1と2のIDを基に一番新しい最新取引日と一番最新の取引回数(取り引数が多いもの)をシート1に抽出するようにしたいと考えています。

上記を可能にする現関数はありますでしょうか?

もしない場合ですが、時間があるかたでユーザー定義関数を作成していただけるかたがおりましたら、作成していただきたいのですがよろしくお願いいたします。


●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:Excel いもの エクセル データ ユーザー
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント ベストアンサー

一般関数でもできそうですが、データ列や内容に依存しそうなのでとりあえずマクロにしてみました。

Const SrcSheetName = "シート2"

'-------------------------------------------------------
Function getLastDate(tName As String) As Date
'-------------------------------------------------------
 Dim r As Range
 Dim lastRow As Long
 lastRow = Worksheets(SrcSheetName).Range("A" & Rows.Count).End(xlUp).Row
 For Each r In Worksheets(SrcSheetName).Range("A1").Resize(lastRow, 1)
 If r.Value = tName Then
 If DateDiff("s", getLastDate, r.Offset(0, 1)) > 0 Then
 getLastDate = r.Offset(0, 1)
 End If
 End If
 Next
End Function

'-------------------------------------------------------
Function getLastCount(tName As String) As String
'-------------------------------------------------------
 Dim r As Range
 Dim dd As Date
 Dim lastRow As Long
 lastRow = Worksheets(SrcSheetName).Range("A" & Rows.Count).End(xlUp).Row
 For Each r In Worksheets(SrcSheetName).Range("A1").Resize(lastRow, 1)
 If r.Value = tName Then
 If DateDiff("s", dd, r.Offset(0, 1)) > 0 Then
 dd = r.Offset(0, 1)
 getLastCount = r.Offset(0, 2)
 End If
 End If
 Next
End Function
B2=getLastDate(A2)
C2=getLastCount(A2)

のように設定して、試してみてください。

◎質問者からの返答

ご回答ありがとうございます。試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ