こんばんは。全回解決したのですが、またまた、変更があり困っています。
列(B列)を削除することになり、前回教えて頂いたコードを自分なりに修正したのですが、
B列には何も反映されません(泣)
https://oshiete.goo.ne.jp/qa/9976435.html#ad1 ←前回の質問です。
↓こちらが前回教えて頂いたコードです。(B列削除前)
Sub Sample3()
Dim i As Long, j As Long, k As Long
Dim lastRow As Long, lastCol As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("データ貼付")
With Worksheets("まとめ")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column - 1
If lastRow > 1 Then
Range(.Cells(2, "C"), .Cells(lastRow, lastCol)).ClearContents
End If
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
If wS.Cells(i, j) <> "" Then
Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
For k = 3 To lastCol
If .Cells(1, k).Interior.Color = wS.Cells(1, j).Interior.Color Then
With .Cells(c.Row, k)
.Value = .Value + wS.Cells(i, j)
End With
End If
Next k
End If
Next j
Next i
End With
End Sub
B列を削除した場合このコードのどこを修正すればいいのか教えてください。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
>B列が反映せず空白のままでした。
もう一度コードを見直してみました。
今回のコードは1行目項目行の色を判定して、その列の操作をするようにしていますね。
B1セルの項目セルは塗りつぶされているでしょうか?
塗りつぶしなしの場合は何も集計されないはずです。
尚、データ消去の範囲がC列からになっていました。
今までのコードはすべて消して、↓のコードにしてみてください。
Sub Sample4()
Dim i As Long, j As Long, k As Long
Dim lastRow As Long, lastCol As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("データ貼付")
With Worksheets("まとめ")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column - 1
If lastRow > 1 Then
Range(.Cells(2, "B"), .Cells(lastRow, lastCol)).ClearContents '//★//
End If
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
If wS.Cells(i, j) <> "" Then
Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
For k = 2 To lastCol
If .Cells(1, k).Interior.Color = wS.Cells(1, j).Interior.Color Then
With .Cells(c.Row, k)
.Value = .Value + wS.Cells(i, j)
End With
End If
Next k
End If
Next j
Next i
End With
End Sub
※ コード内の「★」の部分にも手を加えました。
※ まとめシートの1行目項目セルは「データ貼付」シートの1行目項目セルと
同じ色に塗りつぶされている列だけ集計されると思います。
尚、これでもお望み通りの動きにならない場合は
もう一度各シートがどのような配置になっているかのかをアップしてもらえれば
少しはお役に立てると思います。m(_ _)m
ありがとうございました。 教えて頂いた通り実践すると、見事に”B”列も反映しました。
すごく助かりました!(^^)!
本当にありがとうございました。
No.2
- 回答日時:
No.1です。
前回の質問を見てみました。
前回は「総計」の列の数式も投稿していましたね。
あの数式はC列以降の合計になっています。
今回はB列以降の合計にする必要があるのでは?
そうであれば
=SUM(INDIRECT("C"&ROW()&":"&ADDRESS(ROW(),COLUMN()-1)))
の "C" を "B" に変更してください。
「0」を表示させない数式の
=IF(COUNT(INDIRECT("C"&ROW()&":"&ADDRESS(ROW(),COLUMN()-1))),SUM(INDIRECT("C"&ROW()&":"&ADDRESS(ROW(),COLUMN()-1))),"")
も同様に2か所の "C" を "B" に変更する必要があります。m(_ _)m
No.1
- 回答日時:
こんにちは!
以前回答した者です。
以前の配置がどうなっていたのかはっきり覚えていないのですが、
(昨日の晩飯も何を食ったか忘れています)
>B列を削除した場合このコードのどこを・・・
というコトなので
>For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
の「3」の部分を「2」に変えたらどうなりますか?
3列目(C列)~最終列のひとつ前の列までというコードなので。
もう一つ
>For k = 3 To lastCol
にも「3」を使っていますね。
これもC列~最終列までというコトになりますので、
変数「j」の方の変更だけで不具合が生じたら
こちらも「2」に変更してみてください。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
エクセルについて
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
マクロ 最終列をコピーして最終...
-
URLのリンク切れをマクロを使っ...
-
VBA A列にありB列にないものま...
-
Cellsのかっこの中はどっちが行...
-
VBAでのリスト不一致抽出について
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
VBAを使って検索したセルをコピ...
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
空白セルをとばして転記
-
データグリッドビューの一番最...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【Excel VBA】カンマと改行コー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報
こんにちは。またまたすみません!!
・・・以前の質問内容を省略してすみません。
今日は一日、PCが見れなくて確認するのが明日になります。
>For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1
の「3」の部分を「2」に変てみますね。ダメなら
もう一つ
>For k = 3 To lastCol
にも「3」を「2」に変えてみます。
結果が明日の夜になってしまいますが申し訳ございません。必ずご報告致します。
ありがとうございました。
こんばんは。
台風が来ている影響で今日も出張になり、PCが全然見れませんでした(泣)
データ持ち出し厳禁なので・・・・・(T_T)
総計の”C” を ”B” に変更ですね!明日こそは実践してみます。
返信が遅くなりますが必ずご報告致しますね。
こんばんは。
実践報告が遅くなりすみません。
教えて頂いた通りにコードを修正しましたが、B列が反映せず空白のままでした。
範囲指定がだめなのでしょうか…
こんばんは。
早速 試してみました。B列キチンと反映致しました!!
良かったです。
何度も何度もご丁寧にありがとうございました(*^^*)