• ベストアンサー

Excelについて

Excel2003を使用しています。 以下2件、質問です。 1.例えばF列で0(ゼロ)が入力されている行を削除するには   どういった方法が簡単でいいでしょうか? 2.例えばA列に数値と文字列が混在している場合に   文字列が入力されているセルをある特定の数値(例えば0900)に   置き換えるにはどういった方法がいいでしょうか? 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 (1) オートフィルタを使えば、このようになります。 ご覧の通り、結構、面倒ですが、大量の場合は、これが一番早いかもしれません。なお、0の入っている行全体という意味で取っていますので、EntireRow を使用していまする Sub FindZeroRowDelete() Dim i As Long If ActiveSheet.AutoFilterMode = True Then   ActiveSheet.AutoFilterMode = False End If With Range("F1", Range("F65536").End(xlUp))   .AutoFilter Field:=1, Criteria1:="0"   On Error Resume Next   i = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Count   On Error GoTo 0   If i > 0 Then    .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete   End If   .AutoFilter   '1行目のチェック   If .Cells(1).Value = 0 Then .Cells(1).EntireRow.Delete End With End Sub (2) Sub ReplaceString2Figure()  With Range("A1", Range("A65536").End(xlUp))   On Error Resume Next   .SpecialCells(xlCellTypeConstants, 2).NumberFormatLocal = "0000"   .SpecialCells(xlCellTypeConstants, 2).Value = 900   On Error GoTo 0  End With End Sub なお、Private キーワードは、一般的には、イベントやサブルーチンに使用するものです。なお、セル一つずつ文字列を調べる場合は、VarType でないと、取れないと思います。

rx-z5815
質問者

お礼

回答ありがとうございます。 教えていただいた方法でうまくいきました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#4 ミスタイプです。 EntireRow を使用していまする  ↓ EntireRow を使用しています。 みっともないので、訂正します。

回答No.3

2をマクロで書くとこうなります。 ------------------------------------ Private Sub StrToNum() Dim MaxR As Long '最終行を格納する変数 Dim i As Long 'ループカウンタ Const Num As Long = 900 '文字列を上書きする数値を規定 '入力されている最後の行番号を取得 MaxR = Cells.SpecialCells(xlCellTypeLastCell).Row '1行目から最終行までループ For i = 1 To MaxR If (Not IsNumeric(Cells(i, 1).Value)) Then 'A列が数字でなければ規定した数値で上書き Cells(i, 1).Value = Num End If Next i End Sub ------------------------------------ ・・・私はVisualBasic寄りのVBAしか書けないので もっといい方法があるかも知れませんが ご参考までに(^^;)

rx-z5815
質問者

お礼

回答ありがとうございました<(_ _)> 今回も最後まで親切に教えていただいて助かりました!

rx-z5815
質問者

補足

こんばんは。 参考までに教えていただいたマクロを使ってみようと思い VBEを開いてコードをコピペさせてもらったのですが いざ実行しようとするとマクロ名の一覧の中にこのマクロが 見当たらないのです。他のマクロは一覧の中にあるのに どうしてなのでしょう? もしおわかりになれば教えていただきたいのですが… よろしくお願いします。

回答No.2

1.オートフィルタでF列が0の行だけを表示して   一気に行削除が一番簡単だと思います。 2.マクロを使わないのであれば、ちょっと面倒ですが   私ならこうします。  (1)空いている列に数式[=IsNumber(A1)]を入力  (2)(1)を全行にコピー  (3)オートフィルタでFALSEの行だけを表示して  (4)一気にA1列を特定の数値で上書き

rx-z5815
質問者

補足

回答ありがとうございます。 1については、やはりオートフィルタが一番簡単なようなので この方法で処理しようと思います。 2についてですが、教えていただいた方法で試してみたところ できました。 ちなみに、マクロを使用するとどんなふうになるのでしょうか? マクロ初心者で勉強中ですので、参考までに教えていただけると 嬉しいです(^^)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

1についてはオートフィルタを用いるのが簡単でしょう。F列を選択して「データ」→「フィルタ」→「オートフィルタ」を選択します。F1に▼マークが出ますから、これをクリックしてリストから「0」を選ぶとF列が「0」の行だけが表示されます。 表示された行を削除して下さい 2は意味不明瞭です。 >数値と文字列が混在している とはどういうことでしょうか。

rx-z5815
質問者

補足

質問2についてですが 数値が入力されているセルもあれば、文字が入力されているセルもある という意味で書いたつもりでした。。。

関連するQ&A

専門家に質問してみよう