プロが教える店舗&オフィスのセキュリティ対策術

Excel VBAマクロについて質問です
※Excel Ver.は2005でやってます

例のような感じで、

同じ列(列1)に或る同じ列名の数字(列2)を足して
違うセル、または違うブックの指定行に合計値を横並び表示させたいのですがうまくいきません

例のように
同じ言葉が含まれているもの(りんご・青りんご)は足して出したいと思ってます


【理想】実行前
******************************
番号  名前  個数
001   りんご  1
002   ばなな  2
003   いちご  3
001   青りんご 2
******************************


【理想】実行後
******************************
番号   りんご  ばなな  いちご
001    3      -     -
002    -      2     -
003    -      -      3
******************************

※「-」記号はついてなくても大丈夫です


現在、組んでいるコード・実行結果をのせておきました
どなたか享受ください、お願いいたします



j = 1
For i = 0 To Range("A65536").End(xlUp).Row
cnt = cnt + Range("列2" & i).Value

If Range("C" & i + 1).value <> Range("C" & i).value Then 'もし次の行が違う名
Range("任意セル" & j).Value = Range("A" & i).Value '列1
Range("任意セル" & j).Value = Range("B" & i).Value '列2
Range("任意セル" & j).Value = cnt '数字合計
j = j + 1 '出力行カウントアップ
cnt = 0
End If
Next

A 回答 (2件)

こんばんは!


>同じ言葉が含まれているもの(りんご・青りんご)は・・・
とありますが、A列の番号だけを見て同じ番号の場合は同類とします。

一例です。(こちらで勝手にコードを考えていますので元のコードとはかけ離れたものになっています)

元データはSheet1にあり、Sheet2に表示するようにしてみました。

Sub test()
Dim i As Long, j As Long, k As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
ws2.Cells.ClearContents
ws1.Columns(1).Copy ws2.Cells(1, 1)
k = ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws2.Cells(2, 1), ws2.Cells(k, 1)).Sort key1:=ws2.Cells(1, 1), order1:=xlAscending
For j = k To 2 Step -1
If WorksheetFunction.CountIf(ws2.Columns(1), ws2.Cells(j, 1)) > 1 Then
ws2.Rows(j).Delete
End If
Next j
For k = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
ws2.Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = _
WorksheetFunction.VLookup(ws2.Cells(k, 1), Range(ws1.Columns(1), ws1.Columns(2)), 2, False)
Next k
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
k = WorksheetFunction.Match(ws1.Cells(i, 1), ws2.Columns(1), False)
ws2.Cells(k, k) = ws2.Cells(k, k) + ws1.Cells(i, 3)
Next i
End Sub

※ For~Nextを多用していますので、若干時間がかかると思います。
参考になりますかね?m(_ _)m
    • good
    • 0

【理想】実行前


******************************
番号  名前  個数
001   りんご  1
002   ばなな  2
003   いちご  3
001   青りんご 2
******************************

どれが1列目、2列目なのか。
どれが1行目、2行目なのか。
どれがセルの中身なのか、
分かりにくい。


cnt = cnt + Range("列2" & i).Value
とあるから、「個数」が2列目のようだが、
では「番号」は何? 行番号でもなさそうだし。

番号が振ってあるのなら、名前ではなく番号で同じかどうか判断できるのでは?
    • good
    • 0

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