- ベストアンサー
整数行を残し小数点の行を削除するには?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
一例です。 行を削除する場合は最終行側から行うのが基本となります。 添付画面ではC列データに途中で空白は無い事になっていますが、念のため空白セルを除外するようにしています。 Sub test() Dim i As Integer Dim MaxRow As Integer 'C列最終行取得 MaxRow = Cells(Rows.Count, 3).End(xlUp).Row 'C列セルの値がintで整数にした値と同じ場合は整数、他は小数点を含む。小数点を含む場合は行削除 For i = MaxRow To 1 Step -1 If Cells(i, 3) <> "" Then If Int(Cells(i, 3)) = Cells(i, 3) Then Rows(i).Delete Shift:=xlShiftUp End If Next End Sub
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
簡単に sub macro1() dim Target as range dim s as string set target = range("A2:O" & cells(rows.count, 1).end(xlup).row) s = activesheet.name worksheets.add range("B2").formula = "=INT(" & s & "!C3)=" & s & "!C3" target.advancedfilter action:=xlfiltercopy, criteriarange:=range("B1:B2"), copytorange:=range("A3"), unique:=false range("2:2").delete shift:=xlshiftup end sub ぐらいで。
お礼
回答ありがとうございます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >C列に測定時間があり、 とありますので、画像通りC3セル以降のデータをSheet2のA列に表示する一例です。 Sheetモジュールにしていますので、Sheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, cnt As Long Worksheets("Sheet2").Range("A:A").ClearContents For i = 3 To Cells(Rows.Count, 3).End(xlUp).Row If Cells(i, 3) * 10 Mod 10 = 0 Then cnt = cnt + 1 Worksheets("Sheet2").Cells(cnt, 1) = Cells(i, 3) End If Next i End Sub 'この行まで ※ 上記コード内の >If Cells(i, 3) * 10 Mod 10 = 0 Then は >If Cells(i, 3) Mod 1 = 0 Then でOKだと思ったのですが、 望んでいた結果になりませんでしたので、敢えて10倍した数を10の除算の余りがあるかどうか? とやってみました。 なぜ >If Cells(i, 3) Mod 1 = 0 Then ではダメなのか当方にも理由が判りませんが、この程度でごめんなさいね。m(_ _)m
お礼
回答有難うございました。勉強になりました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
小数点の付いた数字のみ削除したいなら、データ範囲を選択し、Ctrl+Hで置換ダイアログを出し、検索する文字列に「*.*」を入力して「すべて置換」してください。 データを詰めて表示したなら、その選択状態のままCtrl+Gでジャンプダイアログを出し、「セル選択」から「空白セル」にチェックを入れ、右クリックから「削除」を選択し「上方向にシフト」にチェックを入れ「OK」してください。 マクロにする必要があるなら上記の操作を「マクロの記録」で記録してみて下さい。
お礼
回答いただき有難うございます。置換の仕方勉強になりました。有難うございます。
お礼
回答有難うございました。参考になりました。
補足
If Int(Cells(i, 3)) = Cells(i, 3) Then でデバックが出てしまうのですが。