• 締切済み

EXCEL VBAマクロについて質問です

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

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

【理想】実行前 ****************************** 番号  名前  個数 001   りんご  1 002   ばなな  2 003   いちご  3 001   青りんご 2 ****************************** どれが1列目、2列目なのか。 どれが1行目、2行目なのか。 どれがセルの中身なのか、 分かりにくい。 cnt = cnt + Range("列2" & i).Value とあるから、「個数」が2列目のようだが、 では「番号」は何? 行番号でもなさそうだし。 番号が振ってあるのなら、名前ではなく番号で同じかどうか判断できるのでは?