アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。全回解決したのですが、またまた、変更があり困っています。
列(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列を削除した場合このコードのどこを修正すればいいのか教えてください。
宜しくお願い致します。

質問者からの補足コメント

  • うれしい

    こんにちは。またまたすみません!!

    ・・・以前の質問内容を省略してすみません。
    今日は一日、PCが見れなくて確認するのが明日になります。

    >For j = 3 To wS.Cells(1, Columns.Count).End(xlToLeft).Column - 1

    の「3」の部分を「2」に変てみますね。ダメなら

    もう一つ
    >For k = 3 To lastCol
    にも「3」を「2」に変えてみます。


    結果が明日の夜になってしまいますが申し訳ございません。必ずご報告致します。

    ありがとうございました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/10/19 11:54
  • つらい・・・

    こんばんは。

    台風が来ている影響で今日も出張になり、PCが全然見れませんでした(泣)
    データ持ち出し厳禁なので・・・・・(T_T)

    総計の”C” を ”B” に変更ですね!明日こそは実践してみます。
    返信が遅くなりますが必ずご報告致しますね。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/10/20 22:30
  • うーん・・・

    こんばんは。

    実践報告が遅くなりすみません。

    教えて頂いた通りにコードを修正しましたが、B列が反映せず空白のままでした。

    範囲指定がだめなのでしょうか…

      補足日時:2017/10/21 18:18
  • HAPPY

    こんばんは。

    早速 試してみました。B列キチンと反映致しました!!
    良かったです。

    何度も何度もご丁寧にありがとうございました(*^^*)

      補足日時:2017/10/21 20:56

A 回答 (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
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございました。 教えて頂いた通り実践すると、見事に”B”列も反映しました。
すごく助かりました!(^^)!

本当にありがとうございました。

お礼日時:2017/10/21 23:06

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
この回答への補足あり
    • good
    • 0

こんにちは!



以前回答した者です。
以前の配置がどうなっていたのかはっきり覚えていないのですが、
(昨日の晩飯も何を食ったか忘れています)

>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
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!