- 締切済み
小数点以下2桁ある数字の列削除
この1個前で質問させて頂きましたが、上手く伝わりませんでしたので、今1度説明させて頂きます。 0~6000秒間で、タンク内にガスを注入し続けて、圧力の変化を観察しました。 ※圧力の変化については、ここが本題では無いので無視して下さい。 時間は、0秒▶︎0.01秒▶︎0.02秒▶︎0.03秒…と順々にカウントして、6000秒まで測定を行いました。 測定データをExcelのA行に時間(秒)、B行に圧力値を記入しまとめました。 そこから、グラフを作っていくのですが、ちょっとExcelを触ろうとするならば、フリーズしてしまいます。 そこで、時間の数値で、小数点以下2桁を持っている数字は全て削除したいです。 例)0.01、20.59、300.45、1000.67等を消去。0.1、10.2、300.5、100.1は残したい。 です。 一気に整理する方法を教えて下さい。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- SI299792
- ベストアンサー率47% (777/1626)
画像の様に、必ず元データが0.01刻みと仮定して、 K2: =INDEX(B:B,ROW()*10-18) R2迄コピペ。 纏めて、K60001迄コピペ。 (実データによって調整が必要なので、実データがどのように入っているか上げて下さい) 小数第2位の有無が不規則な場合は、 https://okwave.jp/qa/q10145626.html にあげた式をご利用ください。
- kkkkkm
- ベストアンサー率66% (1731/2601)
No.1の方法で、フィルターかけて削除だと時間がかかるかもなので、逆に必要なデータでフィルターかけて、そのデータを新しいブックにコピペするほうが早いでしょう。
- HohoPapa
- ベストアンサー率65% (455/693)
6000秒、秒あたり100レコードであれば、 600000レコードあることになりますね。 このレコード数のデータをエクセルのシート上で処理することが 少々無謀に思えます。 私だったら、課題シートのデータをCSVファイルに保存し シートを使わず、VBAの順処理で対応します。 よかったら試してみてください。 (それともVBAを使わない解を求めていますか?) 手順: 課題シートを "C:\work\元データ.csv" の名前で、CSV(コンマ区切り)(*.csv)を指定して保存します。 適当なマクロブックを用意し、後記マクロを実行します。 なお、以下が前提です。 ・チェックする時間(2.23、100.21)といった値の埋まった列はA列 ・この埋まった値は、単なる小数値(日付や時刻シリアル値ではない) ・1行目にタイトル行がある ・環境依存文字を使っていない 前提が異なるようならコメントしてください。 また、課題列がNull、あるいは、数値以外がセットされている場合 エラーを表示し、出力対象にしています。 Option Explicit Sub Sample() Dim TextLine Dim s '各レコードを分解した配列 Dim i As Long '入力側レコード番号 Open "C:\work\元データ.csv" For Input As #1 Open "C:\work\先データ.csv" For Output As #2 On Error GoTo ErrLabel i = 0 Do While Not EOF(1) i = i + 1 Line Input #1, TextLine If i = 1 Then Print #2, TextLine Else s = Split(TextLine, ",") If Int(Val(s(0) * 100)) Mod 10 = 0 Then Print #2, TextLine End If End If Loop Close #1 Close #2 Exit Sub ErrLabel: MsgBox "値異常 レコード番号:" & i Resume Next End Sub
- kkkkkm
- ベストアンサー率66% (1731/2601)
> この1個前で質問させて頂きましたが、上手く伝わりませんでした > そこで、時間の数値で、小数点以下2桁を持っている数字は全て削除したいです。 前回の回答でも 小数点下2桁を含む数値のセルがある行だけが表示されますので その後、表示されている行だけを削除します。 と回答に記載していたのに、伝わってないと思ったのは何故なんでしょうね。 伝わっていなかったとしたら、何が伝わっていなかったのか今回の質問でもわかりません。 それとも、質問者は最後の回答しか見ていないとか?
- imogasi
- ベストアンサー率27% (4737/17069)
前の質問では、写真だけ挙げて文章での説明がないので、判りにくかった。回答が無駄になった。 前の質問の締めきりやお礼は書いたのか。それがマナーのようだ。 ーー 文章にすれば「A列の数値が、小数点以下2桁以上の数字のあるセルの行は削除したい」かな。 ーー 「小数点以下2桁以上の数字があるセル」を関数で判定すると 同行の空きセルに=IF(A1-INT(A1*10)/10<>0,"a","") で該当の行は「a」となる。 (テストは、その列の表示形式は数値とし、小数点以下3桁以上に設定のこと) ーーー この式 =A1-INT(A1*10)/10<>0 を使って「条件付き書式」を設定し、該当行を削除してはどうか。 VBAでやれば簡単だが、お呼びじゃないだろう。 行削除して、その分で行的に、繰り上げる必要があるのだろう。 例えば、セルの「a」の値の行は削除して、非該当は他セル範囲に出す、関数による方法は。WEBに載っているが、それらの例と全く同じではないはずで、質問者には理解・修正が難しいだろう。 だから操作でやるのを勧める。 判別は関数でやるとしても、行削除のセル(範囲)の選択は、人間の目による判定で手動操作(CTRLキーを押しながら)マウスでクリックをすることを勧める。他では時間が掛かるばかりだろうから。
- msMike
- ベストアンサー率20% (364/1805)
確認させてください。 》 …を持っている数字は全て削除したい… 削除するのは該当セルだけを空白にする、ということですか? 該当するセルを含む行全体を削除する、ということですか?
- kkkkkm
- ベストアンサー率66% (1731/2601)
前回の画像ではB列でしたので説明はB列としてますが、A列なら A列選択でB1をA1に、VBAのコードでは”B"を"A"に変更してください。
- kkkkkm
- ベストアンサー率66% (1731/2601)
VBA(マクロ)でしたら Sub Test() Dim i As Long Dim LastRow As Long LastRow = Cells(Rows.Count, "B").End(xlUp).Row For i = LastRow To 1 Step -1 If Len(Format(Abs(Cells(i, "B").Value) - Abs(Fix(Cells(i, "B").Value)), "0.###")) > 3 Then Rows(i).Delete End If Next End Sub
- kkkkkm
- ベストアンサー率66% (1731/2601)
前回の回答に何の反応もありませんが 以下の方法では駄目だったという事ですか これを条件付き書式で B列をB1から全て選択した状態で 数式で マイナスがある場合 =LEN(TEXT(MOD(ABS(B1), 1),"0.###"))>3 マイナスが100%無い場合は以下で =LEN(TEXT(MOD(B1, 1),"0.###"))>3 MOD関数で何かおかしかった場合 元の数値から整数部分を引いて小数部分を取り出すパターンに変更してみてください。 =LEN(TEXT(ABS(B1-TRUNC(B1)),"0.###"))>3 マイナスが100%無い場合は以下で =LEN(TEXT(B1-TRUNC(B1),"0.###"))>3 としてセルの色を適当に決めます。 条件付き書式で特定の文字列を含む行を色付けするには? https://excel-plus.jp/2016/07/02/8070 この時点で小数点下2桁を含む数値のセルに色が付きますので、セルの色でフィルターをかけます。 指定した色でフィルタ(抽出)するには http://www.excel-img.com/database03.html 小数点下2桁を含む数値のセルがある行だけが表示されますので その後、表示されている行だけを削除します。 Excelでフィルタで抽出したデータだけを残す/削除する http://sasayakanaon.blog.fc2.com/blog-entry-9.html