アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の通りL列以降に日付が入力されています。日付は昇順です。
基準日以前の列を削除させる処理をVBAで実現したいのですがどのようにすれば良いのか
御教示お願い致します(基準日:ワークシートの特定のセルに基準日が入力されている)
基準日より古い日付は必ず存在します。

    A列 ・・・ L列     M列     N列     O列     ・・・
1行目 ** ・・・ 2018/12/9 2018/12/16 2018/12/23 2018/12/30     

基準日が2018/12/23の場合、L列~N列までを削除

A 回答 (5件)

「日付は昇順」、「基準日より古い日付は必ず存在」が必ず満たされているのであれば、こんな感じで十分だと思います。



Sub sample()
Dim r As Range
Dim m As Variant
Set r = Range(Cells(1, "L"), Cells(1, Columns.Count))
m = WorksheetFunction.Match(Range("A1"), r, 1)
Cells(1, "L").Resize(, m).EntireColumn.Delete
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
意図通りに動作する事出来ました。

お礼日時:2018/12/29 16:54

No.4 1箇所ミス



If Sh2.Cells(2, i) >= 基準 Then

Cells(2, i)の部分を、Cells(1, i)に訂正して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
意図通り動作する事が出来ました。

お礼日時:2018/12/29 16:58

ではsheet1 A1セルに基準日、列削除したいシートはsheet2として作ります。


合致する列が無い事も考慮する必要がありますので、ロジック処理が必要です。
その為、if then else endif ロジックで組みます。

このサイト、字下げが出来ないので、後で字下げを行なって下さい。

Sub WK()
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim 基準 As Date

Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")

基準 = Sh1.Range("A1").Value '基準日取得
最終列 = Sh2.Range("A1").End(xlToRight).Column '最終列番号行取得

'基準日より前の最右列を計算
For i = 12 To 最終列

If Sh2.Cells(2, i) >= 基準 Then
Exit For
End If

Next i


'列範囲削除(L列~最終列前までが削除対象かをチェック&GO)
If (i > 12) And (i < 最終列) Then
Sh2.Range(Columns(12), Columns(i - 1)).Delete '列削除
End If

Application.StatusBar = False
End Sub
    • good
    • 0

確認が数点有ります。



1.基準日
プログラムで自動でやる訳なので、基準日をどうやって求めるか、が必要になります。
どこかに有るのですか?
それともプログラム内に持つのですか?

2.基準日と合致しない場合
基準日以前の列が削除対象ですか?
    • good
    • 0
この回答へのお礼

1.基準日
ありがとうございます。
基準日は下記ですでにセルに事前に入力しておきます。
今回は例としてsheet1 A1セルに日付データが入力されているでお願いします。
⇒ > (基準日:ワークシートの特定のセルに基準日が入力されている)

2.基準日と合致しない場合
下記でお願いします。つまり基準日以前の列は全て削除対象となります
⇒ > 基準日が2018/12/23の場合、L列~N列までを削除

お礼日時:2018/12/29 15:05

>>L列~N列までを削除


列削除だと、2行目以下も一気に削除されますが、それでokなんですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
列ごと削除なので、2行目以下も消して問題ありません。
(補足:削除はデータクリアではなく、左方向にシフトの削除がしたいです)

お礼日時:2018/12/29 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています