No.4ベストアンサー
- 回答日時:
マクロで逐一削除してった方が簡単そうです。
E1に記入されてる内容を,B2:E7の範囲から削除する:
sub macro1()
dim c as range
dim a as variant
a = range("E1").value
set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
do until c is nothing
c.delete shift:=xlshiftup
set c = range("B2:E7").find(what:=a, lookin:=xlvalues, lookat:=xlwhole)
loop
end sub
別のマクロ:一括削除してみる
sub macro2()
range("B2:E7").replace what:=range("E1").value, replacement:="", lookat:=xlwhole
range("B2:E7").specialcells(xlcelltypeblanks).delete shift:=xlshiftup
end sub
#「削除したくない空白」が「指定範囲」に紛れている場合は,空白ではなく例えば「エラー値」などに置換して削除する
#一応指摘しておきます
ANo2さんのマクロでは,縦に2つW,Wと繋がっていると漏らします。
お答え有難うございます。
試させていただきました。どちらもきっちりです。
またFINDの使い方をはじめて知りました。
随分簡明に書けているのに感心しました。
また答えを二つ有難うございます。
二つ目も非常に短い構文で表現され、勉強になります。
No.5
- 回答日時:
No.2です。
No.4さんのご指摘通りでした。
検証せずに投稿してごめんなさいね。
(No.4さん、どうもありがとうございました。)
一気に削除するコードを載せてもNo.4さんの二番煎じになりますので、
別のコードにしてみました。
今回も範囲指定した後にマクロを実行してみてください。
Sub Sample2()
Dim i As Long, j As Long
For j = Selection(1).Column To Selection(Selection.Count).Column
For i = Selection(Selection.Count).Row To Selection(1).Row Step -1
If Cells(i, j) = Range("E1") Then
Cells(i, j).Delete shift:=xlUp
End If
Next i
Next j
End Sub
※ 削除の場合は後ろから!という基本的なコトを忘れていました。m(_ _)m
試させていただきました。
Wを連ねてもパッチリです。
このような表現の仕方もあること、なるほどです。
新しいお答え有難うございます。
No.3
- 回答日時:
手抜きマクロですがこんな感じでどうでしょう。
Sub Sample()
Dim nFlg, rOne, rTarget As Range
For Each rOne In Range("B2:E7")
If rOne.Value = Range("E1").Value Then
'E1と同じ値のセルが入っているセルを覚えておく
If rTarget Is Nothing Then
Set rTarget = rOne
nFlg = 1
Else
Set rTarget = Union(rTarget, rOne)
End If
End If
Next rOne
'覚えておいたセルを削除(上方向へシフト)
If nFlg = 1 Then rTarget.Delete Shift:=xlUp
End Sub
お答え有難うございます。
試してみましたら、きちっと求めている表示になりました。流石です。
まだVBAの勉強不足ですべて理解しきっておりませんので、
あわてずに、しっかり自身で組めるようにしたいと思います。
No.1
- 回答日時:
VBAの知識が無いのであれば、関数で処理可能です。
ご参考まで。
B10に下記式コピペ
=INDEX(B:B,SMALL(IF(B$2:B$7=$E$1,99,ROW(B$2:B$7)),ROW(B1)))&""
上記式は配列式なので、シフトキー及びコントロールキーを押しながらエンターキーを押します。
B10の式が{}で括られてるのを確認出来たら式が完成です。
{=INDEX(B:B,SMALL(IF(B$2:B$7=$E$1,99,ROW(B$2:B$7)),ROW(B1)))&""}
括弧でくくられない場合は、B10セル選択し、数式バーにカーソルを合わせてくだい。
B10の式をE15までコピペで完了です。
素早いお答え有難うございます。
マクロを使わずに配列式だけでできるとは!
あとでしっかり式を理解したいと思います。
今後の中で利用させていただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
- Excel(エクセル) エクセルの数式について教えて下さい。 8 2023/05/27 12:17
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 文字を増やしたい。
-
エクセルの計算
-
セルの内容表示が邪魔になる
-
Excel
-
Microsoft365に変えたのですが...
-
エクセル:一覧表に存在する文...
-
エクセルで日付を数字+アルフ...
-
エクセルでの作業計算方法について
-
エクセルで年休を管理する方法...
-
はがきについて。
-
【マクロ】その時、その時で変...
-
excelの不要な行の削除ができな...
-
Microsoft1Officeの互換ソフト...
-
エクセル関数を教えてください
-
Excel ピボットテーブルで日付...
-
【マクロ】読取専用のファイル...
-
【関数】適切な文字数の数字を...
-
時間によってファイル名が変わ...
-
ある列、或いは、ある行のセル...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報