勇気が出てくる言霊

アインがあなたの未来を占います

条件を満たす行を削除する

 

条件を満たす行を削除する

 

ループで削除する   Topへ

  • 複数のばらばらな行を削除するときは、ループで後ろの方から削除するのが基本です。
    なぜなら、行を削除すると、行位置が1つ前にずれてくるのでループすると都合が悪いのです。
    つまり、2行目を削除したら3行目のデータが2行目に移動します。ループのカウンターは2ですから、次は3・・・ずれる前の4行目が次の対象になってしまうからです。

不都合なコードの例

  • 実行前の状態
    申込数が 0 の行を削除します。
  • 不都合なコード
    行の先頭から削除すると・・・ダメな例です。
    Sub test01()
     Dim i As Long
      For i = 2 To 10
        If Cells(i, 2).Value = 0 Then
          Range(i & ":" & i).Delete
        End If
      Next i
    End Sub
  • 実行後の状態

行を削除するコードの例

  • 下表の申込数が0の行を削除します。
  • コードの例
    1行ずつ削除すると画面がちらつきますので、Application.ScreenUpdating = False で画面表示を止めて削除しています。
    Sub test01a()
     Dim lRow As Long
     Dim i As Long
      lRow = Cells(Rows.Count, 1).End(xlUp).Row
      Application.ScreenUpdating = False
      For i = lRow To 2 Step -1
        If Cells(i, 2).Value = 0 Then
          Range(i & ":" & i).Delete
        End If
      Next i
      Application.ScreenUpdating = True
    End Sub
    • 削除部分は Cells(i, 2).EntireRow.Delete とすることもできます。
  • 実行後

配列を利用して削除する

  • 対象のデータが配列に読み込める程度のデータ量である場合、配列にデータを読み込み必要なデータのみにしてから書き出すことができます。
  • なお、この方法ではループ中に行位置は変わらないので、ループは前の方からでよいことになります。
    Sub test03()
     Dim lRow As Long, lCol As Long
     Dim i As Long, j As Long
     Dim x, y
     Dim myCnt As Long
      lRow = Cells(Rows.Count, 1).End(xlUp).Row
      lCol = Cells(1, Columns.Count).End(xlToLeft).Column
      '----データを配列Xに読み込む
      x = Range(Cells(1, 1), Cells(lRow, lCol)).Value
      '----データを書き出す配列yを準備する
      ReDim y(1 To lRow, 1 To lCol)
      For i = 1 To lRow
        '----削除しないデータを配列yに書き込む
        If x(i, 2) <> 0 Then
          myCnt = myCnt + 1
          For j = 1 To lCol
            y(myCnt, j) = x(i, j)
          Next j
        End If
      Next i
      '----配列yをシートへ書き出す
      Range("A1").Resize(lRow, lCol).Value = y
    End Sub
    • なお、条件は If Not x(i, 2) = 0 Then としてもよいと思います。

空白行を削除する

  1. 空白セルの行を削除する場合は、条件を Cells(i, 1).Value ="" とします。
    ここでは、A列のセルの値="" としていますので、数式で""が返されているセルも削除対象となります。
    Sub test0b()
     Dim lRow As Long
     Dim i As Long
      lRow = Cells(Rows.Count, 1).End(xlUp).Row
      Application.ScreenUpdating = False
      For i = lRow To 2 Step -1
        If Cells(i, 1).Value ="" Then
          Range(i & ":" & i).Delete
        End If
      Next i
      Application.ScreenUpdating = True
    End Sub
    • 実行前
    • 実行後
  2. 空白セルの判定をVarType(Cells(i, 1)) = vbEmptyとすると、"" が入っているセルは削除されません。
    • If IsEmpty(Cells(i, 1)) Then とすることもできます。
    Sub test0c()
     Dim lRow As Long
     Dim i As Long
      lRow = Cells(Rows.Count, 1).End(xlUp).Row
      Application.ScreenUpdating = False
      For i = lRow To 2 Step -1
         If VarType(Cells(i, 1)) = vbEmpty Then
          Range(i & ":" & i).Delete
        End If
      Next i
      Application.ScreenUpdating = True
    End Sub
    • 実行前
    • 実行後

ありのままでいられる方法②

相手が怒ってきて文句うを言ってきたとき

上司に叱られた時

自分に非がないと思っても

相手の感情を害した事は事実なので

謝るのは自然な事です

 

相手が怒っているのには

何か自分の所にも非があるの ”かも” 知れないので

謝るだけ謝っておく

 

犯罪者にも5分の理があるのです

人間誰しも人のせいにしたがるので

 

相手の理を見つけ未来の自分へのメッセージとして

今度からから そこは

 

次回からきおつけ

 

反省 だけして その瞬間に終わらす

 

人のせいにしないで自分の 過ちだけを みると

 

心が穏やかになり その瞬間に

落ち着いてくると思います

ありのままでいられる方法①

それは、「ありのままでの自分でいられる環境に身を置く」

 

自分の好きなことをしているとき

親しい人と過ごしている時

ありのままの自分

自然体でいられる

 

好まない環境の所へは

近づかない

行かないようにする

 

それでOK!

 

 

嫌なことは好きなことに置き換えてみる

嫌なことや面倒くさいことが色々いきてるとありますよね?

 

その時ちょっとやり方が

 

「好きなことに関連付ける」

 

掃除が面倒とか

考えてしまったときに

 

道具を好きなキャラクターグッズに変えてみたり

してみてはどうですか?

 

例えば

 

仕事で重いものを持つ仕事があったとしたら

面倒くさい

やりきれない

 

とか、なったとき

考え方を変えてみるのはどうでしょうか?

 

「お金をもらいながら ”筋トレできる!”」

 

とか、などどうでしょうか?

 

考え方気持ちを軸を変えてみると

生き方が軽くなるのかもしれません

 

では・・

 

嫌なものは見ない近づけない!

嫌なことがあったり嫌なことを思い出したら

試してほしいことですが

 

自分の自信を取り戻させてくれるものを

 

常に自分の周りに置いておく

目に見えるところに置いておく

すぐに見つけ出せる所に保存をしておくなど

 

例えば

 

NETで拾ってきた自分が”元気になる言葉”などのを集めて

携帯のスマホにフォルダをつくってすぐに見れる方法をとってみたり

 

自分が今まで人に感謝されたことなどをメールに集めてみたり

 

自分を認めてくれている人や

自分が得意としてるものを近くに置き

見てすぐにそちらに自分の気持ちを持っていく

 

など

 

嫌なもの嫌いな人は

自分の周りに近づけない

考えないようにしましょう

 

それにはすぐに自分がポジティブになれるものを

近くに置いておきましょう

 

 

 

最初の一歩だけが一番エネルギーがいる

最初の一歩が人間行動できないものです

 

それを克服するための一つの提案は

 

動く順番をリスト化し箇条書きで作ってみることが

効果的です

 

その一歩目がだめなんだよ!

 

って、思われる方がいると思います

 

分かります

 

自分もそうです、

 

それを克服するには

リスト化の全部一気にやるのではなく

1行だけでもいいのです

もっと極端に言えば

メモ帳なり机の前に座っただけでも

一日目はOKです

そしてすわっただけでもOKなのでそれを毎日続けてみてください

それで、10秒だけ書くをやってみてください

たった10秒でいいです

嫌になったらそれで一日を終わりにしてよいです

座っただけ、メモ帳開いただけでもいいです

毎日続けてみてください

 

リストの作り方ですが

例えば毎日の行動リストを作るのだとしたら

 

出勤する→自分の部署のPCの電源を入れる→メールをチェックする

 

など、

 

当たり前のことをアクションリストに書き出していってください

リストの効果は

作っておきますとやったとかやってるイメージがわくので

やった気になるので

ポジティブな気持ちになれると思います

 

なので

 

行動リストを作る習慣をつけるようにしていきましょう