![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以前、特定の範囲の該当データを抽出するマクロを教えていただいたのですが
条件が少し変わった場合、また、追加で条件を追加した場合どこをどう修正すれば良いでしょうか?
↓以前、投稿した質問です。
https://oshiete.goo.ne.jp/qa/9498737.html
○今回新しく抽出したい条件(列等、データのフォーマットは変わりません)
①2と9から始まる12桁の商品コードだけを抽出。それ以外は削除。
②以前の条件、4.5.6から始まる12桁の商品コード+9から始まる12桁の商品コードの中で「9010104564」だけを抽出、それ以外は削除。
度々申し訳ありませんが、ご教授願います。
No.5ベストアンサー
- 回答日時:
大変申し訳ございませんでした。
「Select Case」文に変えてみました。---------------------------------------------------------------------------
Sub Sample①()
Dim 行 As Long
Application.ScreenUpdating = False
For 行 = Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
Select Case Cells(行, 9).Value
Case Is < 200000000000#
Rows(行).Delete Shift:=xlUp
Case 300000000000# To 899999999999#
Rows(行).Delete Shift:=xlUp
Case Is >= 1000000000000#
Rows(行).Delete Shift:=xlUp
End Select
Next
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------------------------
Sub Sample②()
Dim 行 As Long
Application.ScreenUpdating = False
For 行 = Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
Select Case Cells(行, 9).Value
Case Is < 400000000000#
Rows(行).Delete Shift:=xlUp
Case 700000000000# To 901010456422#
Rows(行).Delete Shift:=xlUp
Case Is >= 901010456424#
Rows(行).Delete Shift:=xlUp
End Select
Next
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------------------------
お忙しい中、何度もお手数をおかけしております。
①に関しては、再度ご教授頂いたマクロで無事解決いたしました。
ありがとうございます。
ただ、②に関しては4.5.6から始まる12桁の商品コードは抽出されるのですが
「901010456422」だけ抽出されないようです。
何が原因でしょうか?
何度も申し訳ありませんが、再度ご教授頂ければ幸いです。
何卒、よろしくお願いいたします。
No.6
- 回答日時:
No.5 のお礼について
「901010456422」ではなく「901010456423」という事でしたが…
大変失礼いたしました。
記載間違いでした。申し訳ありません。
また、質問の際に挙げた商品コードが例として挙げたものでした。
元の商品コードを当てはめる際、「901010456422」と「901010456424」のコードを
同一コードにしてしまっていたことが抽出されない原因だということに気づきました。
↓
Case Is < 400000000000#
Rows(行).Delete Shift:=xlUp
Case 700000000000# To 901010456422#
Rows(行).Delete Shift:=xlUp
Case Is >= 901010456424#
→4以上7未満の12桁の商品コード+901010456422以上901010456424未満のコード(すなわち901010456423)
という意味ですね?理解不足で大変申し訳ありませんでした。
ですので、無事解決いたしました。
本当にいつもいつも親身に丁寧にご教授頂き感謝しております。
ありがとうございました。
No.4
- 回答日時:
毎回マクロを作成するのは面倒くさいですね。
アドインを使ったほうが楽だと思います。アドバイス頂きましてありがとうございます。
アドインは存じ上げませんでしたので、調べてみたいと思います。
ありがとうございます。
No.3
- 回答日時:
後々の事を考えると、削除する方で指定したほうが追加しやすいので IF文をダラダラ並べてみました。
--------------------------------------------------------------------------
Sub Sample①()
Dim 行 As Long
Application.ScreenUpdating = False
For 行 = Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
With Cells(行, 9)
If .Value < 200000000000# Then
Rows(行).Delete Shift:=xlUp
End If
If .Value >= 300000000000# And .Value < 900000000000# Then
Rows(行).Delete Shift:=xlUp
End If
If .Value >= 1000000000000# Then
Rows(行).Delete Shift:=xlUp
End If
End With
Next
Application.ScreenUpdating = True
End Sub
--------------------------------------------------------------------------
Sub Sample②()
Dim 行 As Long
Application.ScreenUpdating = False
For 行 = Cells(Rows.Count, 9).End(xlUp).Row To 2 Step -1
With Cells(行, 9)
If .Value < 400000000000# Then
Rows(行).Delete Shift:=xlUp
End If
If .Value >= 700000000000# And .Value < 901010456423# Then
Rows(行).Delete Shift:=xlUp
End If
If .Value > 901010456423# Then
Rows(行).Delete Shift:=xlUp
End If
End With
Next
Application.ScreenUpdating = True
End Sub
--------------------------------------------------------------------------
※ 判ると思いますが、商品コードが13桁以上が無いのならば次の3行は不要です
If .Value >= 1000000000000# Then
Rows(行).Delete Shift:=xlUp
End If
No.2
- 回答日時:
①と②は別という事ですね。
気づかず申し訳ございませんでした。もう一つ確認です。
②の方ですが「9010104564」だけをと有りますが12桁無いのですが、次のうちどれになるのでしょうか?
① 9010104567、400000000000 ~ 699999999999 だけ残す。
② 400000000000 ~ 699999999999、901010456700 ~ 901010456799 だけ残す。
③ その他(詳しく説明してください)
こちらこそ分かりずらく申し訳ありませんでした。
>もう一つ確認です。
>②の方ですが「9010104564」だけをと有りますが12桁無いのですが、次のうちどれになるのでしょうか?
>① 9010104567、400000000000 ~ 699999999999 だけ残す。
>② 400000000000 ~ 699999999999、901010456700 ~ 901010456799 だけ残す。
>③ その他(詳しく説明してください)
→③になります。
①2と9から始まる12桁の商品コードだけを抽出。それ以外は削除。
→200000000000~299999999999+900000000000~999999999999だけを抽出。それ以外は削除。
②以前の条件、4.5.6から始まる12桁の商品コード+9から始まる12桁の商品コードの中で「9010104564」だけを抽出、それ以外は削除。
→そもそも私が記載した商品コードが12桁ではなかったですね。大変失礼いたしました。「901010456423」
400000000000~699999999999+901010456423だけを抽出。それ以外は削除。
度々恐縮ではございますが、何卒よろしくお願いいたします。
No.1
- 回答日時:
確認ですが①の条件で「4.5.6から始まる12桁の商品コード」は削除されてしまいますが良いのでしょうか?
もしかしたら次のようなことでしょうか?
①2、4、5、6、9から始まる12桁の商品コードだけを抽出。それ以外は削除。
②9から始まる12桁の商品コードについては「9010104564」だけを抽出、それ以外は削除。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのクエリで同じSQL文だが...
-
<SQL>条件付きで最小値レコード...
-
MS-DOSコマンドプロンプトを途...
-
ACCESSの集計クエリで3件ある...
-
エクセル関数 文字(ハイフン...
-
エクセル Offset関数 飛び行の...
-
エクセルでのWEB取り込みに...
-
GROUP BY 句を使う時のWHERE と...
-
SQLplusでデータ抽出時の行番号...
-
アクセスのクエリの抽出条件に...
-
Excelで別のExcelファイルから...
-
VBAでビット情報にてデータ抽出
-
SELECT * FROM `生徒名簿` INNE...
-
初心者Mysqlの関数のsubstring...
-
Accessで別テーブルの値をフォ...
-
ADO VBA 実行時エラー3021
-
select insertで複数テーブルか...
-
GROUP BYを行った後に結合した...
-
ACCESSで大量の更新を行うと「...
-
Date型にNULLをセットしたい V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクスプローラーで「2つの条件...
-
抽出したデータを修正して元の...
-
ACCESSの集計クエリで3件ある...
-
MS-DOSコマンドプロンプトを途...
-
ACCESSのクエリで同じSQL文だが...
-
アクセス クエリ-で空白以外の...
-
エクセル関数 文字(ハイフン...
-
空白文字とスペースの検索
-
<SQL>条件付きで最小値レコード...
-
SQLServerからエクセルにデータ...
-
VBA CSVファイルを文字列に
-
エクセルデータの末尾の改行を...
-
ADO接続からのACCESSデータシー...
-
Excel VBA:セルを新旧1つずつ...
-
商品テーブルからカテゴリ別の...
-
エクセル Offset関数 飛び行の...
-
エクセルで特定データの抽出を...
-
アクセスでのデータの引き抜き(...
-
VBAでEXCELファイルからデータ...
-
Excel2007:Microsoft quaryで外...
おすすめ情報
ご返信ありがとうございます。
また、説明不足で申し訳ありません。
①は4.5.6は関係なく、新たに2.9から始まる12桁の商品コードだけを抽出したい。それ以外は削除。
②は以前質問してご回答いただいているマクロ(4.5.6から始まる12桁の商品コードの抽出)の条件に9から始まる12桁の商品コードを抽出という条件を追加したい。
さらに9から始まる12桁の商品コードに関しては、その中で「9010104564」だけを抽出したい。
結果、4.5.6+9(9010104564だけ)を抽出したい。それ以外は削除。
説明が下手で申し訳ありません。
こちらで回答になっておりますでしょうか?
何卒、よろしくお願いいたします。
ご丁寧にご教授いただきましてありがとうございます。
また、ご返信が遅くなり申し訳ありません。
ご教授頂いたマクロを実行してみたのですがそれぞれsample①②の下記部分にエラーが出てしまいます。
ちなみに、エラーが「実行時エラー"424" オブジェクトが必要」と表示されます。
原因は何が考えられますでしょうか?
↓下記エラーで出る部分です。
①If .Value >= 300000000000# And .Value < 900000000000# Then
②If .Value >= 700000000000# And .Value < 900109500300# Then
急ぎではございませんので、お時間ある際再度ご教授頂ければ幸いです。