No.1
- 回答日時:
>>フィルタ等を使用せず
何を使用していいのでしょうか?
または、その逆でもかまいません。
この回答への補足
質問が分かりにくく、すみません。
1 2 3 4 5
A 10 0 0
B
C 5
D 8 9 7 9
no
のような状態です。
尚、セルにはすべて数式が入っていて=で別Sheetからの参照しています。
このようなものを、ボタンのようなものを作成し、それを押すと、B行以外が残る状態にしたいのですが…
No.2
- 回答日時:
■手順■
1)該当の列を範囲指定します
2)メニューバーの[編集]-[ジャンプ]-[セル選択]を選択します
3)「空白セル」にチェックして、OK
4)列のうちの空白セルが選択されます
5)その状態で、メニューバーの[編集]-[削除]-[行全体]を選択し、OK
6)もし、この列に数値以外の文字列入力行も削除したいのであれば
7)該当の列を範囲指定します
8)メニューバーの[編集]-[ジャンプ]-[セル選択]を選択します
9)「定数」にチェックして、「数値」のチェックをはずして、OK
10)その状態で、メニューバーの[編集]-[削除]-[行全体]を選択し、OK
No.3
- 回答日時:
>フィルタ等を使用せず、…簡単に削除
フィルタが一番簡単だと思います。「フィルタ等が使えない理由」を補足していただくと良い回答があるかもしれませんよ。
もちろんマクロでも可能ですが、マクロを書くためには条件が足りません
・「特定のセル」とはどこ?
・「数値がない」は「手入力」と「計算式の結果」両方を含む?
・データの範囲(○行目~×行目)はどの列で判定すればよい? 等
これらを想像で補ってマクロを書くことは可能ですが、ponpa22さんに手直ししていただく必要がでますね。
この回答への補足
質問が分かりにくく、すみません。
1 2 3 4 5
A 5 0 0
B
C 5
D 8 9 7 9
no
のような状態です。
尚、セルにはすべて数式が入っていて=で別Sheetからの参照しています。
このようなものを、ボタンのようなものを作成し、それを押すと、B行以外が残る状態にしたいのですが…
No.4
- 回答日時:
(1)なぜフィルタという、エクセルで便利な機能を使わない
質問の書き振りからすると、素人の気まぐれかと思っちゃう。
(2)目視で数値がない行を(CTRL)範囲指定し、行削除しては。行数の多少も質問に書いてない。
(3)関数でもできるが
(A)作業列を使う
(B)作業列を使わない
どちらも、関数の本来の使い方でなく複雑化するので、回答の式の意味が理解できるか、、質問の書き振りから想像して心配。
(4)もちろんVBAでできますがVBAの作成経験はあるの
(5)数値のない行
数値に拘るの?データが入っていないセル=空白セルのこと?
(6)特定のセル
どういう風に特定を割り出すの?
(7)簡単に
関数での回答が、もし頭にあるなら、行削除は関数ではできないのをご存知か?その結果関数を組み合わせてやるのだが、複雑になる。
(8)特定のセルのある列は決まっている1列にありますか
決まっておれば、また空白セルなら
列指定
編集ージャンプーセル選択ー空白セル
で選べる。
編集ー削除ー行全体
で削除できる。しかし文字列のセルは選択できないよう。
どういう方法があるかもわからない前提で、簡単にとはいえないでしょう。ここが複雑なので簡単にと言う質問ならありえるが。
もう少し回答者のことを考えて質問文を書いてほしい。
この回答への補足
質問が分かりにくく、すみません。
1 2 3 4 5
A 5 0 0
B
C 5
D 8 9 7 9
のような状態です。
尚、セルにはすべて数式が入っていて=で別Sheetからの参照しています。
このようなものを、ボタンのようなものを作成し、それを押すと、1列目が空白の行(B行)以外が残る状態にしたいのですが…
No.5
- 回答日時:
これで、試していただけますか?
前提:
何も入力されていないセルを削除する。
入力されていないセルの定義は、xlCellTypeBlanks
対象範囲は:ActiveSheet.UsedRange.Address
----------------------------------------------
Sub test()
hani = ActiveSheet.UsedRange.Address
Range(hani).SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub
----------------------------------------------
注意:8192個以上のそのようなセルは、まずいようです。
できること、できないことを分かって、使えばよいと思いますが・・・・
しかし、その他にも、上記では問題がありました。行内に2つ以上のブランクがあると、Selection.EntireRow.Delete がエラーとなります。
そこで、下記のようなものを、更に、考えました。
--------------------------------------------------
Sub test2()
dim myArray as variant
hani_test = ActiveSheet.UsedRange.Address
myArray = Range(hani_test).Value
r = UBound(myArray, 1)
'myArrayは、単に、対象エリヤの行数を知りたかっただけです。
'rが行数です。
For i = r To 1 Step -1
Cells(i, 1).Select
hani = Range("A" & i & ":" & Cells(i, 255).End(xlToLeft).Address).Address
aa = 999
aa = Range(hani).SpecialCells(xlCellTypeBlanks).Count
If aa <> 999 Then Range(hani).EntireRow.Delete
Next
End Sub
これであれば、問題もなく、安心して使えると思います。
しかし、
aa = 999
aa = Range(hani).SpecialCells(xlCellTypeBlanks).Count
なぜ、カウントが0の時に、aaに0が入らないのか、分かりません。
カウントが0(空白のセルは無い)の場合は、初期値といれた999
がそのまま生きていますので、
Range(hani).EntireRow.Delete
がスキップされます。
補完していただくことを期待します。
参考URL:http://support.microsoft.com/kb/832293/ja
No.6
- 回答日時:
A No.5の書き込みをしたものです。
一部表現を修正させていただきます。
前提:
何も入力されていないセル「を含む行」を削除する。
入力されていないセルの定義は、xlCellTypeBlanks
対象範囲は:ActiveSheet.UsedRange.Address
「を含む行」を追記しました。
No.7ベストアンサー
- 回答日時:
こんにちは。
>ボタンのようなものを作成し、それを押すと
うーむ。マクロですね。
コントロールツールボックス・バーを出したら、その中のボタンをドラッグして、適当な場所に張りつけします。
そのボタンを右クリックして、コードの表示をクリックすると
Private Sub CommandButton1_Click()
End Sub
こんなようなものが出てくるはずですから、そこに上書きしてしまってください。
'------------------------------------------------
Private Sub CommandButton1_Click()
Dim i As Long
Application.ScreenUpdating = False
'A列の範囲を以下で取ります
With Range("A1", Range("A65536").End(xlUp))
For i = .Rows.Count To 2 Step -1 '先頭行は残します
If .Cells(i, 1).Value = "" Then
.Cells(i, 1).EntireRow.Delete
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
'------------------------------------------------
後は、Alt+Q で、画面を閉じたら、今は、コントロール・ツールボックスのバーの[青い三角定規]が[オン]の状態ですから、クリックして、[オフ]にしてから、コントロール・ツールボックスのバーを非表示させてください。
なお、今回のケースは、ジャンプ機能やSpcialCellsメソッドは、あまりうまくいかないように思います。
No.8
- 回答日時:
>尚、セルにはすべて数式が入っていて=で別Sheetからの参照しています。
>このようなものを、ボタンのようなものを作成し、それを押すと、B行以外が残る状態にしたい
色々アイデアは、あります。
A列で並び替えを実施します。今、問題のセルは所謂「空白」ですので、
下(A列、昇順)に集まります。集まったものを一気に削除。
配慮その1:
現状の行の並びが重要であるなら、1列追加して、現状の並びで通し番号を
つけておき、前述の並び替え、削除の後で、この通し番号を使って、オリジナルの並びに戻す。
尚、本件は、下記を前提にしています。
数式が入っていて=で別Sheet・・・・・
=if(xxxx,1,"")
このように、条件が合えば、数値、さもなくば "" をいれる
というような数式を考えています。
目では見えなくとも、何か、入っている場合は、Wendy02さんも言われるように、 SpecialCellsは、使えないです。
目で見えるものを評価するには、Cells(i, 1).Value を使うか、
あるいは、並び替えかな、と思います。
小生も、勉強になりました。
No.9
- 回答日時:
#03です。
>1列目が空白の行(B行)以外が残る状態にしたいのです
であればオートフィルタで絞り込みを行い、まとめて行削除することが可能です。それにも関わらず「フィルタはNG」であればマクロしかありません。よほど頻繁に使用するのでボタン起動できるようにされたいのでしょうか?
一番左側(A列)のセルの値が空白の行を削除するマクロは既出ですので、該当する条件の行を「隠す」マクロを以下に示します。わざわざ式を入力したセルをマクロで削除すると「復活」ができなくなりますし、式の書き方によっては#REF!エラーとなる可能性もありますので、「見えなくする」だけにとどめます。マクロをどこに書くかは#07さんの回答を参考にして下さい。
Private Sub CommandButton1_Click()
Dim idx As Long
For idx = 1 To ActiveSheet.Range("A65536").End(xlUp).Row
If ActiveSheet.Cells(idx, 1).Value = "" Then
ActiveSheet.Cells(idx, 1).EntireRow.Hidden = True
End If
Next idx
End Sub
マクロ実行によって非表示になった行は、見えなくなっている行を含む範囲を選択して「右クリック」→「再表示」で表示することが可能です。
蛇足かもしれませんが、このシートで集計を行う必要があるのであればSUM関数、COUNT関数ではなくSUBTOTAL関数を使用すると良いと思います。SUBTOTAL関数は「非表示の行は集計しない」ですから、「表示された行」だけを集計することが可能です。
No.10
- 回答日時:
質問の意図とはかけ離れた回答になります。
フィルタ処理で十分実用に耐えると思いますが如何でしょう。
印刷範囲を指定して、その外にフィルタ用の関数を記述する列を
設定することでスマートな処理が可能です。
また、後から元のデータが変更された場合にも対応が可能になります。
行を削除すると参照しているセルその物が消えてしまいますので
以後、意図しない結果が返る可能性があります。
繰り返し利用するような場合はフィルタで対応することをお薦めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- Visual Basic(VBA) エクセル関数のことで質問です。 別シートセルから値をもってくるように関数を設定しているときに、 別シ 3 2023/01/31 14:10
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) 列を指定して値を左から5文字にそろえる 1 2022/06/10 20:28
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセルの昇順での数値入力のミスの見つけ方を教えてください。 4 2022/06/26 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
直近の5個の平均を求めたい
-
[EXCEL]ボタン押す→時刻が表に...
-
【Excel関数】UNIQUE関数で"0"...
-
アクティブになっている行をマ...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
【EXCEL】連続データの個数を抽...
-
エクセルで特定の文字列が入っ...
-
Excel 時刻の並び替え
-
エクセルのセルに指定画像(.jpg...
-
チェックボックスをクリックし...
-
セルの色によって条件文をつけ...
-
エクセル マクロ オートフィ...
-
エクセル2016で時間を入力して...
-
電話番号の入力方式が違うデー...
-
このような複雑な表をワードで...
-
エクセルで、ポインタのある行...
-
Excel マクロで特定のセルに入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
Excel ウインドウ枠の固定をす...
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
エクセル2016で時間を入力して...
-
excel 小さすぎて見えないセル...
-
EXCELで最後の行を固定
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
エクセルマクロで偶数行(又は...
-
エクセルのセルに指定画像(.jpg...
-
罫線の斜線を自動で引くマクロ
おすすめ情報