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

画像のような表(A表からB表)にしたいのですがどうしてもできません。
VBAでも良いので教えてください。
A表
No | 項目1|項目2|項目3|・・・・・
1101 | 150 | | |
1101 | |200 |140 |
1111 | |100 |200 |
1121 | 200 |110 | |

  ↓

B表
No | 項目1|項目2|項目3|・・・・・
1101 | 150 |200 |140 |
1111 | |100 |200 |
1121 | 200 |110 | |

統合機能使ったんですが「何も統合されませんでした」と出ました。

A 回答 (4件)

「統合の設定」をよ~く、確認してみましょう。

特に「統合の基準」あたりを。
「Excelの表、重複データ2行を1行にす」の回答画像3
    • good
    • 1
この回答へのお礼

ありがとうございました。
こちらの方法でできました。
どうやらすべて文字列になっていたみたいで統合されなかったようです。

お礼日時:2020/03/12 16:21

No.2です。



例えば『1101』には『項目1の2行目』で 150 がありますが同じ『項目1』且つ『他の行』で値が存在するのかなって思ってただけです。
たまにキーワード毎に各集計をしたいって質問もあるものですから。
    • good
    • 0
この回答へのお礼

ありがとうございます。
『1101』には『項目1の2行目』で 150 がありますが同じ『項目1』且つ『他の行』で値が存在はしません。

お礼日時:2020/03/12 16:28

既に解決とは思いますがちょっと気になった点だけを。



同じNoで各項目で値が複数現れる可能性はないのでしょうか?
どっちかなぁ~と思ってフリーズしてました。
    • good
    • 0
この回答へのお礼

申し訳ございません。ちょっと理解ができていないんですが…どういうことでしょうか?

お礼日時:2020/03/12 15:46

こんにちは!



VBAになりますが、一例です。
元データはSheet1にあり、1行目は項目行でデータは2行目以降にあるとし、Sheet2に表示するとします。

標準モジュールです。

Sub Sample1()
 Dim myDic As Object
 Dim i As Long, j As Long
 Dim lastRow As Long, lastCol As Long
 Dim myStr As String, buf As String
 Dim wS As Worksheet
 Dim myKey, myItem, myAry

  Set myDic = CreateObject("Scripting.Dictionary")
  Set wS = Worksheets("Sheet2")
   '//▼Sheet2のデータを一旦消去//
   lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
   lastCol = wS.UsedRange.Columns.Count
    If lastRow > 1 Then
     Range(wS.Cells(2, "A"), wS.Cells(lastRow, lastCol)).ClearContents
    End If

    With Worksheets("Sheet1")
     For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
      myStr = .Cells(i, "A")
      For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column
       If .Cells(i, j) <> "" Then
        buf = buf & .Cells(i, j) & "_"
       End If
      Next j
       buf = Left(buf, Len(buf) - 1)
       If Not myDic.exists(myStr) Then
        myDic.Add myStr, buf
       Else
        myDic(myStr) = myDic(myStr) & "_" & buf
       End If
       buf = ""
     Next i
    End With
   myKey = myDic.keys
   myItem = myDic.items
    For i = 0 To UBound(myKey)
     wS.Cells(i + 2, "A") = myKey(i)
      myAry = Split(myItem(i), "_")
       For j = 0 To UBound(myAry)
        wS.Cells(i + 2, j + 2) = myAry(j)
       Next j
    Next i
     Set myDic = Nothing
     wS.Activate
     MsgBox "完了"
End Sub

こんな感じではどうでしょうか?

※ 細かいエラー処理はしていません。m(_ _)m
    • good
    • 0
この回答へのお礼

うーん・・・

ありがとうございます
参考にさせていただきます。

まだ初心者でして・・・
良かったら上記のVBは何がどのようなことをしているのか教えていただけたらと思うんですが・・・・・だめですか?
甘えすぎかもしれないんですが・・わからな過ぎて。
申し訳ございませんがよろしくお願いします。

お礼日時:2020/03/12 15:39

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