条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で同一ファイル内に連続的に作成する。

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

演習問題テーマ:条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で同一ファイル内に連続的に作成する。

条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で同一ファイル内に連続的に作成します。複数の抽出条件それぞれについて別シートを作成しなくてはならない場合がありますので、そのための解説です。

この教材についての過去の質問・感想

9108 : 小川慶一の回答 (2017-11-05 18:17:05)

受講生 さん:

> ・select はクール!

発展編1まで進むとそうではなくなりますけどね。
ともあれ、お楽しみください。
この講座では、かなり腕力に頼って問題解決しています。基礎編レベルの道具でここまでやるなら、発展編1で学ぶ道具を使ったほうが簡単ですが (^^;

> ・select はクール!
> ・シートごとに分類するマクロを作る時は”リスト”などの下準備をしておくといい


9102 : 受講生さんのコメント (2017-10-31 21:23:36)

・select はクール!
・シートごとに分類するマクロを作る時は”リスト”などの下準備をしておくといい


9058 : 小川慶一の回答 (2017-10-15 12:19:13)

受講生 さん:

ご提案のものでも悪くはないとは思います。
(他にもやり方あるとは思いますが、課題がシンプルすぎるので、善悪つけがたい別解ばかりです)

>動画のとおりに素直に下からFor Nextで処理したいです。

ですね。


9048 : 受講生さんのコメント (2017-10-12 22:44:12)

お世話になっております。
[8959]で説明されているDo Loopで上から処理をするとなると、こんな感じになるのでしょうか。違和感があるため、動画のとおりに素直に下からFor Nextで処理したいです。

Sub Sample()
    Dim i As Long, j As Long, wsName As String
    With Sheets("リスト")
        For i = 4 To 7
            Sheets("本番").Copy After:=Sheets(Sheets.Count)
            wsName = .Cells(i, 4)
            ActiveSheet.Name = wsName
            j = 4
            Do While Cells(j, 2).Value <> ""
                If .Cells(i, 3).Value <> Cells(j, 4).Value Then
                    Range(Cells(j, 2), Cells(j, 5)).Delete Shift:=xlUp
                    j = j - 1
                End If
                j = j + 1
            Loop
        Next i
    End With
End Sub


8962 : 小川慶一の回答 (2017-09-28 20:45:49)

金子 伊智郎さん:

> やっと動画30まで終わりました。終わりが見えて来ました...

早いですね (^^*

ご興味ありましたら、 DoLoop も調べてみてください。

なお、DoLoop構文を含むプログラムの実行には永久ループがつきものですが、先回りしてお伝えすると、実行中のプログラムを強制終了するには、 [Esc] キーです。

実務での成果報告も、楽しみにしてますね☆



> 小川慶一さん:
>
> コメントありがとうございます。
> 確かにこのやり方でもできますね。
> For文のカウンター変数については存じております。
>
> やっと動画30まで終わりました。終わりが見えて来ました...


8959 : 金子 伊智郎さんのコメント (2017-09-28 17:09:32)

小川慶一さん:

コメントありがとうございます。
確かにこのやり方でもできますね。
For文のカウンター変数については存じております。

やっと動画30まで終わりました。終わりが見えて来ました...

> 金子 伊智郎さん:
>
> コメント1号、ありがとう&おめでとうございますw
>
> おお、 For Each構文。
> ここは、基礎編レベルのスキルだけで書くなら、以下の流れです。
> worksheets.count は、アクティブなワークブックの、ワークシートの枚数を教えてくれます。
>
>

Dim i
> For i = 1 To Worksheets.Count
>     If Worksheets(i).Name = sname Then
>         Application.DisplayAlerts = False
>         Worksheets(i).Delete
>         Exit For
>         Application.DisplayAlerts = True
>     End If
> Next

>
> > 上から順に処理するとなると行削除する際にカウンターを-1でしょうか..
> > 気持ち悪いコードになりそうです。
>
> For Next構文では、カウンター変数の値はループの中でいじらないのが大原則です。
> ということで、NGです。動かないことはないですが、気持ち悪いですね。
>
> ループの中で行番号を示す変数の値をいじるなら、 DoLoop構文を使います。
>


8957 : 小川慶一の回答 (2017-09-28 16:56:30)

金子 伊智郎さん:

コメント1号、ありがとう&おめでとうございますw

おお、 For Each構文。
ここは、基礎編レベルのスキルだけで書くなら、以下の流れです。
worksheets.count は、アクティブなワークブックの、ワークシートの枚数を教えてくれます。

Dim i
For i = 1 To Worksheets.Count
    If Worksheets(i).Name = sname Then
        Application.DisplayAlerts = False
        Worksheets(i).Delete
        Exit For
        Application.DisplayAlerts = True
    End If
Next


> 上から順に処理するとなると行削除する際にカウンターを-1でしょうか..
> 気持ち悪いコードになりそうです。

For Next構文では、カウンター変数の値はループの中でいじらないのが大原則です。
ということで、NGです。動かないことはないですが、気持ち悪いですね。

ループの中で行番号を示す変数の値をいじるなら、 DoLoop構文を使います。


8949 : 金子 伊智郎さんのコメント (2017-09-28 15:53:29)

前回と今回の動画を見る前に作ってみました。
ポイントはシートコピーする前に存在したら削除するようにした点です。
下から上に処理をしていくというヒントをもらっていたのでスムーズに
できました。
上から順に処理するとなると行削除する際にカウンターを-1でしょうか..
気持ち悪いコードになりそうです。

Sub mondai3()
    Dim gyo
    Dim jyokyo
    Dim komoku
    Dim sname
    Dim ws As Worksheet
    
    For jyokyo = 4 To 7
        komoku = Worksheets("リスト").Range("C" & jyokyo).Value
        sname = Worksheets("リスト").Range("D" & jyokyo).Value
         
         For Each ws In Worksheets
            If ws.Name = sname Then
                Application.DisplayAlerts = False
                Worksheets(sname).Delete
                Application.DisplayAlerts = True
                Exit For
            End If
         Next
        Sheets("本番").Copy After:=Sheets(7)
        Sheets("本番 (2)").Name = sname
    
        For gyo = 29 To 4 Step -1
            If Worksheets(sname).Range("D" & gyo).Value <> komoku Then
                Worksheets(sname).Rows(gyo & ":" & gyo).Select
                Selection.Delete Shift:=xlUp
            End If
        Next
    Next

End Sub

コメントがないためさびしい限りですが第1号になって見ます。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 住所情報を都道府県から市区町村レベルで細かく分割する
    【動画1】 住所情報を都道府県から市区町村レベルで細かく分割する 未習得
  2. 【動画2】 保険料額表から標準報酬額ごとの保険料負担額を算出する
    【動画2】 保険料額表から標準報酬額ごとの保険料負担額を算出する 未習得
  3. 【動画3】 セル内の文字列から区切り文字を見つけ、その出現回数+1回だけデータ転記する
    【動画3】 セル内の文字列から区切り文字を見つけ、その出現回数+1回だけデータ転記する 未習得
  4. 【動画4】 セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す
    【動画4】 セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す 未習得
  5. 【動画5】 セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を反映しつつデータ転記する
    【動画5】 セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を反映しつつデータ転記する 未習得
  6. 【動画6】 VLookUp関数、Index関数、Match関数より便利なマクロ-該当する行が見つからない場合の処理をアレンジ
    【動画6】 VLookUp関数、Index関数、Match関数より便利なマクロ-該当する行が見つからない場合の処理をアレンジ 未習得
  7. 【動画7】 VLookUp関数、Index関数、Match関数より便利なマクロ-複数シート間、複数ファイル間でのマッチング
    【動画7】 VLookUp関数、Index関数、Match関数より便利なマクロ-複数シート間、複数ファイル間でのマッチング 未習得
  8. 【動画8】 転記先シートを生成してデータを流し込む。
    【動画8】 転記先シートを生成してデータを流し込む。 未習得
  9. 【動画9】 転記先ファイルを生成してデータを流し込む。
    【動画9】 転記先ファイルを生成してデータを流し込む。 未習得
  10. 【動画10】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で作成する。
    【動画10】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で作成する。 未習得
  11. 【動画11】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で同一ファイル内に連続的に作成する。
    【動画11】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で同一ファイル内に連続的に作成する。 未習得
  12. 【動画12】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で複数の別ファイルとして連続的に作成する。
    【動画12】 条件に一致するデータだけのリストを、条件に一致しないデータを削除する方法で複数の別ファイルとして連続的に作成する。 未習得
  13. 【動画13】 ファイル配布→配布先でのデータ記入→記入済データを手元資料に統合
    【動画13】 ファイル配布→配布先でのデータ記入→記入済データを手元資料に統合 未習得
  14. 【動画14】 データ記入用ファイルを配布する-その1
    【動画14】 データ記入用ファイルを配布する-その1 未習得
  15. 【動画15】 データ記入用ファイルを配布する-その2
    【動画15】 データ記入用ファイルを配布する-その2 未習得
  16. 【動画16】 各部署からファイルを回収し、記入済データを手元資料に統合その1
    【動画16】 各部署からファイルを回収し、記入済データを手元資料に統合その1 未習得
  17. 【動画17】 各部署からファイルを回収し、記入済データを手元資料に統合その2
    【動画17】 各部署からファイルを回収し、記入済データを手元資料に統合その2 未習得
  18. 【動画18】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その1)
    【動画18】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その1) 未習得
  19. 【動画19】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その2-1)
    【動画19】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その2-1) 未習得
  20. 【動画20】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その2-2)
    【動画20】 商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その2-2) 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ