
昨日質問し、回答を頂いたものです。
もう少しで作業が上手くいきそうなのですが
教えて頂いたコードの各工程の意味(処理)がわからず
止まっています。
一つずつ調べてはいますが、かなり時間がかかっていて
とても今日中に終わりそうになくて焦っています。
急いでいるもので、すいませんがどなたか下のコードの各行が
どのような意味か、訳をつけて頂けないでしょうか。
Sub Test()
Dim myCol As Integer, myVal
Dim LRow As Long, myRow As Long
With ActiveSheet
LRow = .Cells(65536, 1).End(xlUp).Offset(1, 0).Row
For myCol = .Range("IV1").End(xlToLeft).Column To 3 Step -1
myVal = 0
myRow = .Cells(65536, myCol).End(xlUp).Row
If myRow = 1 Then
.Columns(myCol).Delete
Else
Do While myRow > 1 And .Cells(myRow, myCol).Value <> "●"
myVal = myVal + .Cells(myRow, myCol).Value
myRow = myRow - 1
Loop
.Cells(LRow, myCol) = myVal
End If
Next myCol
End With
End Sub
ちなみに元の質問内容は
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259731
です。
No.1ベストアンサー
- 回答日時:
Sub Test()
'変数の宣言 myColが整数、myValが可変、LRowとmyRowが長整数
Dim myCol As Integer, myVal
Dim LRow As Long, myRow As Long
'開いてるシートでの処理
With ActiveSheet
'最下行の位置取得
LRow = .Cells(65536, 1).End(xlUp).Offset(1, 0).Row
'最右端の列からC列まで逆順に処理をループ
For myCol = .Range("IV1").End(xlToLeft).Column To 3 Step -1
'myValを初期化 0をセット
myVal = 0
'現在列の最下行を取得
myRow = .Cells(65536, myCol).End(xlUp).Row
'最下行が1行目の場合、その列を削除
If myRow = 1 Then
.Columns(myCol).Delete
Else
'2行目以下が●以外なら数値を合計
Do While myRow > 1 And .Cells(myRow, myCol).Value <> "●"
myVal = myVal + .Cells(myRow, myCol).Value
myRow = myRow - 1
Loop
'現在列の最下行に合計をセット
.Cells(LRow, myCol) = myVal
End If
Next myCol
End With
End Sub
No.4
- 回答日時:
>ただ何も入力されていないチームの列が削除されなくて
>原因を調べてるところです。
>If myRow = 1 Then
> .Columns(myCol).Delete
1 を データベースの見出し行に変更。
No.3
- 回答日時:
Do While myRow > 1 And .Cells(myRow, myCol) <> "●"
If IsNumeric(.Cells(myRow, myCol)) Then
myVal = myVal + .Cells(myRow, myCol)
End If
myRow = myRow - 1
Loop
ですかね。
本当にありがとうございます。
完璧に思っていた通りのことが出来ました!
お礼ついでにもう一つだけわがままを言わせてもらうと
このマクロを実行して処理が完了するまでに
1分くらいかかってしまうのですが、このような処理は
やはり重たいものなのでしょうか。
今まで膨大なデータベースをフィルタ処理したり
ユーザーフォームを表示して編集作業したりといった
ことはかなり軽く動いていたので・・・。
チーム数が100以上あるので処理しているところを
見た感じでは列を順に削除している工程で時間が
かかっているように思えます。
それでも思っていた事ができてかなり嬉しいです☆
処理が完了するまで
”しばらくお待ち下さい”みたいなウィンドウを
表示しておいて、処理が完了したら
”完了しました”みたいなことって簡単に
できるものですか?
No.2
- 回答日時:
元の質問での
>早速、適用しようと今作っている本シートの方に
>組み込んでみたのですが、うまくいかず止まって
>しまいました。
シートのデータが問題になるかと思いますが、
どの行で止まりますか?
また、エラーメッセージは?
止まったのは
myVal = myVal + .Cells(myRow, myCol).Value
のところです。
どうも2行目以下が●以外なら数値を合計のところで
指定を変えてやらなければいけないところをそのまま
記述していたのが原因のようです。
実際の検索シートでは4行目以降がデータベースに
なっていたので、そのように直すと一応処理は出来ました。
ただ何も入力されていないチームの列が削除されなくて
原因を調べてるところです。
検索結果において、得点が全くない(数値も●も一切入力
されていない)チームは列削除したいのですが、今の状態
だと空白が合計されて0点が最下行にセットされてしまい
削除されていない状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
文字の色も参照 VLOOKUP
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
ExcelのVlookup関数の制限について
-
シートをまたぐ条件付き書式に...
-
エクセルの保護で、列の表示や...
-
エクセルで、チェックボックス...
-
VLOOKアップ関数の結果の...
-
Excel の表
-
【VBA】複数のシートの指定した...
-
VBAで繰り返しコピーしながら下...
-
エクセルで、book全体の検索&...
-
Excel の複数シートの列幅を同...
-
Excel 2段組み
-
SUMPRODUCTにて別シートのデー...
-
ある数値に対して、値を返す数...
-
Excelに自動で行の増減をしたい...
-
Excelにて、ファイル内の複数シ...
-
エクセルの列の限界は255列以上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】【配列】3つのシー...
-
文字の色も参照 VLOOKUP
-
【条件付き書式】countifsで複...
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
VBAで繰り返しコピーしながら下...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
エクセルの列の限界は255列以上...
-
SUMPRODUCTにて別シートのデー...
-
VLOOKアップ関数の結果の...
-
excel 複数のシートの同じ場所...
-
【VBA】複数のシートの指定した...
-
Excelに自動で行の増減をしたい...
-
エクセル マクロ 標準モジュー...
-
Excel 2段組み
-
スプレッドシートでindexとIMPO...
おすすめ情報