エクセルのシート間の値のコピー処理で
日付の最大値と最小値を取得して、最小値から最大値まで1ヶ月ごとに転記していきたいです。
何卒、よろしくお願いします。
実現したいこと
このような手順で処理を行っていこうと考えています。
結果的に[転記先]のように転記したい。
[質問1シート]1行目 D列の値がyyyy/mm/dd形式ではない
→無処理
[質問1シート]2行目 D列の値がyyyy/mm/dd形式である
→年月の値を取得し、取得した全ての日付の最小値と最大値を求める
...
以降、yyyy/mm/dd形式かそうでないかで処理の繰り返し
困っている事
上記「実現したいこと」記載の
「各行で年月の値を取得し、最小値と最大値を求める」処理の方法がわかりません。→解決済み
ご回答いただいた内容を参照して、ソースを作成し直したが(現在まで完成しているコード)
「オブジェクト変数またはWithブロック変数が設定されていません」
という内容のエラーメッセージが出てしまう。
現在まで完成しているコード
VBA
1Sub SheetTenki() 2' 3 Dim ec As Long '年月の一番左から一番右までを取得 4 Dim lngFromRowsNo As Long ' 検索する行位置 5 Dim lngToRowsNo As Long ' 書きこむ行位置 6 Dim wsFrom As Worksheet ' 取得側Excelシート 7 Dim wsTo As Worksheet ' 設定側Excelシート 8 9 Dim datMax As Date '日付最大値 10 Dim datMin As Date '日付最小値 11 Dim enddatMax As Date ' 最終的な日付最大値 12 Dim enddatMin As Date '最終的な日付最小値 13 Dim ToColumnNo As Long 14 15 enddatMax = #1/1/100# '日付最大値に最小値を設定 16 enddatMin = #1/1/9999# '日付最最少値に最大値を設定 17 ToColumnNo = 4 18 19 20'シート"質問1"を選択 21 Set wsFrom = Worksheets("質問1") 22 23 'D列を上から検索していき、yyyy/mm/dd形式のセルを抽出する 24 For lngFromRowsNo = 1 To wsFrom.UsedRange.Rows.Count 25 If IsDate(wsFrom.Cells(lngFromRowsNo, 4).Value) Then 26 27 '抽出した行の年月を値が含まれる最大まで(右側)取得 28 '?1は見込み合計を含まないため 29 ec = wsFrom.Cells(lngFromRowsNo, 4).End(xlToRight).Column - 1 30 31 '取得した年月の最大値と最小値を求めて、最小値から最大値までを1ヶ月間隔で転記していく 32 With WorksheetFunction 33 datMax = .Max(Range(wsFrom.Cells(lngFromRowsNo, 4), wsFrom.Cells(lngFromRowsNo, ec))) 34 datMin = .Min(Range(wsFrom.Cells(lngFromRowsNo, 4), wsFrom.Cells(lngFromRowsNo, ec))) 35 End With 36 'どこに転記するか不明なのでとりあえずメッセージボックスに表示 37 'MsgBox "最大値:" & datMax & " 最小値:" & datMin 38 39 If enddatMin > datMin Then 40 enddatMin = datMin 41 End If 42 If enddatMax < datMax Then 43 enddatMax = datMax 44 End If 45 46 ' 次の行へ 47 lngToRowsNo = lngToRowsNo + 1 48 49 End If 50 51 Next lngFromRowsNo 52 53 Do 54 wsTo.Cells(2, ToColumnNo).Value = enddatMin 55 ToColumnNo = ToColumnNo + 1 '次の列へ 56 enddatMin = DateAdd("m", 1, enddatMin) '一ヶ月後 57 Loop Until enddatMin > enddatMax 58 59End Sub
>[質問1シート]1行目 D列の値がyyyy/mm/dd形式ではない
>[質問1シート]2行目 D列の値がyyyy/mm/dd形式である
質問がおかしくありませんか?
>[質問1シート]1行目 D列の値がyyyy/mm/dd形式ではない
>[質問2シート]1行目 D列の値がyyyy/mm/dd形式である
ならまだ意味が判りますが
それとも転記元の写真誤り?
回答2件
あなたの回答
tips
プレビュー