エクセルファイルに”抽出結果”というシートがあり、"着手予定日"という列があります。
セルには9桁の数字が入っています。
1桁目~8桁目までで西暦4桁+月2桁+日2桁を表しています。9桁目は1が入っています。
やりたい事は9桁目の1を一括で消したいです。できるだけ高速処理したいです。
対象数は毎回違うのですが、最大90万くらいです。
FOR~NEXT で処理すると私のパソコンで40万で6秒くらいです。
コードを以下に書きました。
★例えば、配列に格納し、格納したデータから指定文字数を抽出などできますか?
FOR~NEXTより早くできる処理を御存知の方、教えて下さい。
Sub 末番削除() Dim CNT As Long, I As Long, COL As Long Dim maxrow As Long Dim MAXCOL As Long With Sheets("抽出結果").Range("A1").SpecialCells(xlLastCell) maxrow = .Row MAXCOL = .Column End With With Sheets("抽出結果") CNT = WorksheetFunction.CountIf(.Range(.Cells(2, 1), .Cells(2, MAXCOL)), "着手予定日") If CNT > 0 Then COL = .Rows(2).Find("着手予定日").Column For I = 4 To maxrow .Cells(I, COL).Value = Mid(.Cells(I, COL), 1, 8) Next I Else: End If End With End Sub
※"着手予定日"の列番を探しているのは"抽出結果"シートには色々なデータが表示できるように
してある為、ない場合もあるからです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/29 07:41
2017/06/29 08:33