エクセル 複数行にまたがっているデーターを一つの行

このQ&Aのポイント
  • エクセルで複数行にまたがっているデーターを一つの行にまとめる方法について質問があります。具体的には、A列とB列が同じでE列からR列までのデータが異なる場合、C列とD列のデータを一行にまとめたいです。
  • 以前に似たようなVBAの質問を元にさらにやりたいVBAがあるのですが、(前の質問者のURL:http://okwave.jp/qa/q4955096.html) 上記のようなデータがあり、2行目と4行目を削除して、A列とB列とE列からR列までのデータを同じ値でまとめたいです。
  • 関数やVBAを使用して、エクセルで複数行のデータを一つの行にまとめる方法が知りたいです。具体的な要件は、A列とB列とE列からR列までのデータが同じである場合、C列とD列のデータを一行にまとめることです。
回答を見る
  • ベストアンサー

エクセル 複数行にまたがっているデーターを一つの行

以前に似たようなVBAの質問を元にさらにやりたいVBAがあるのですが、 (前の質問者のURL:http://okwave.jp/qa/q4955096.html)       A列  B列   C列   D列   E列 ~ R列 1行目  佐藤 北海道 りんご S 100 105 2行目  佐藤 北海道 ばなな M 100 105   3行目 伊藤  東京  いちご S 100 105 4行目  伊藤  東京  ばなな M 100 105 上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列      C列 1行目  佐藤 北海道  りんご,ばなな  S,M 2行目  伊藤  東京   いちご,ばなな  S,M A列とB列とE列~R列のデーターが同じでC列,D列,のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

並べ替えが出来てなくても何とか対応できるはずですが・・ Sub sample() Dim OWS As Worksheet, NWS As Worksheet Dim myKey As String, myRow As Long, TRow As Long Dim i As Long, j As Long Application.DisplayAlerts = False For Each NWS In Worksheets     If NWS.Name = "結果" Then NWS.Delete Next Set OWS = Sheets("Sheet1") Set NWS = Worksheets.Add     NWS.Name = "結果" For i = 1 To OWS.Cells(Rows.Count, 1).End(xlUp).Row     myKey = OWS.Cells(i, 1) & OWS.Cells(i, 2)     For j = 5 To OWS.Cells(i, Columns.Count).End(xlToLeft).Column         myKey = myKey & OWS.Cells(i, j)     Next j          myRow = WorksheetFunction.CountA(NWS.Columns("A:A")) + 1     If NWS.Columns("E:E").Find(What:=myKey, LookAt:=xlWhole) Is Nothing Then         NWS.Cells(myRow, 1) = OWS.Cells(i, 1)         NWS.Cells(myRow, 2) = OWS.Cells(i, 2)         NWS.Cells(myRow, 3) = OWS.Cells(i, 3)         NWS.Cells(myRow, 4) = OWS.Cells(i, 4)         NWS.Cells(myRow, 5) = myKey     Else         TRow = NWS.Columns("E:E").Find(What:=myKey, LookAt:=xlWhole).Row         NWS.Cells(TRow, 3) = NWS.Cells(TRow, 3) & "," & OWS.Cells(i, 3)         NWS.Cells(TRow, 4) = NWS.Cells(TRow, 4) & "," & OWS.Cells(i, 4)     End If Next i NWS.Columns("E:E").Delete Application.DisplayAlerts = True End Sub やってることはかなり強引ですが、多分できると思います。

mackoji
質問者

補足

一通りできました。 3,4列で同じ言葉があったら、削除することって可能でしょうか? りんご りんご ばなな ばなな だと、 りんご,りんご,ばなな,ばなな となるんです。 これを、 りんご,ばなな にしたいのです。

その他の回答 (3)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

> 3,4列で同じ言葉があったら、削除することって可能でしょうか? できますよ。 #2さんのコードでも、#3(私)のコードでも、 「内容を読み取って応用できれば」どうとでも出来ます。 がんばってくださいね。

mackoji
質問者

補足

熟読して分析してみます。 またわからない意味があれば、その時はご教授いただければ幸いです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 A・B列は並び替えができているという前提です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() Dim i As Long i = Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert Range("A1").Resize(i).Formula = "=CONCATENATE(B1,C1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1)" For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 With Cells(i, "A") If .Value = .Offset(-1) Then Cells(i - 1, "D") = Cells(i - 1, "D") & "," & Cells(i, "D") Cells(i - 1, "E") = Cells(i - 1, "E") & "," & Cells(i, "E") Rows(i).Delete End If End With Next i Range("A:A").Delete Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

元の表がシート1に有るとして1行目は項目名でお示しのデータが2行目から下方にあるとします。 作業列を作って対応します。 T2セルには次の式を入力します。式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。 =IF(A2="","",IF(AND(A2:B2=A3:B3,E2:R2=E3:R3),ROUNDDOWN(MAX(T$1:T1),0)+1,IF(AND(A2:B2=A1:B1,E2:R2=E1:R1),T1+0.1,""))) その式を下方にドラッグコピーします。 シート2はお求めの表でA2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$T:$T),"",IF(COLUMN(A1)<3,INDEX(Sheet1!$A:$B,MATCH(ROW(A1),Sheet1!$T:$T,0),COLUMN(A1)),IF(COLUMN(A1)=3,INDEX(Sheet1!$C:$C,MATCH(ROW(A1),Sheet1!$T:$T,0))&","&INDEX(Sheet1!$C:$C,MATCH(ROW(A1)+0.1,Sheet1!$T:$T,0)),IF(COLUMN(A1)=4,INDEX(Sheet1!$D:$D,MATCH(ROW(A1),Sheet1!$T:$T,0))&","&INDEX(Sheet1!$D:$D,MATCH(ROW(A1)+0.1,Sheet1!$T:$T,0)),""))))

関連するQ&A

  • エクセル 複数行にまたがっているデーターを一つの行にまとめたい

          A列  B列   C列 1行目  佐藤 北海道 りんご 2行目  佐藤 北海道 ばなな   3行目 伊藤  東京  いちご 4行目  伊藤  東京  ばなな  上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列 1行目  佐藤 北海道  りんごばなな 2行目  伊藤  東京   いちごばなな A列とB列のデーターが同じでC列のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • EXCELのマクロで条件2つでの合計

    現在シート1に以下のようにあります。 sheet1   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤 10   ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  5   × 5 いちご 1/20  伊藤  10  △ 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 10 ばなな  1/8  伊藤  6   × 11 いちご  1/20 江口  4   ○ これを以下のようにシート2にしたいです。 sheet2   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤  20  ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  11  × 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 11 いちご  1/20 江口  4   ○ 条件は、「品名」と「担当」が同じならば個数を合計してシート2にコ記すということです。 また、「日付」と「チェック」は照合した一番上の行の「日付」と「チェック」になります。 例えば、2行目と5行目は「いちご」と「伊藤」で同じなので合計を10+10で20にします。 「日付」と「チェック」は2行目の方が上なので「1/10」と「○」になります。 以上をマクロでやりたいです。 マクロの勉強中なので色々なやり方を知りたいです。 よろしくお願いします。

  • エクセル関数 データの抽出について

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • エクセル 最大値データのある行のみを残したい。

    表題の質問をさせていただきます。よろしくお願いいたします。 A列には商品名 B列には販売数があるとします。 商品には一回しか出てこない物や何度も出てくるものがあります。 そこで、販売数が最大値のみの重複しない商品データにする方法をお聞きしたいのです。 できれば非表示的な処理ではなく不要行削除が望ましいです。 例 下の場合 りんご 3(重複商品の最大値) みかん 5(単独商品) りんご 1 バナナ 6(単独商品) りんご 2 イチゴ 2(重複商品の最大値) イチゴ 1 ↓にしたいのです。 りんご 3 みかん 5 バナナ 6 イチゴ 2 よろしくお願いいたします。

  • 同じ行の中で重複するデータを削除してつめる方法

       A    B    C     D      E    F 1|りんご|いちご|りんご|ぶどう|ばなな|りんご 2|すもも|ばなな| 3|りんご|りんご|びわ | 4|かき |りんご|ばなな| データが上記のように記入されている場合、 下記のように、同じ行の中で重複するデータを削除してつめる方法をご伝授ください。     A    B    C     D      E    F 1|りんご|いちご|ぶどう|ばなな|  2|すもも|ばなな| 3|りんご|びわ | 4|かき |りんご|ばなな| よろしくお願いします。

  • 複数条件での期間範囲指定について

    A列   B列    C列   D列 木村 2012/4/1 りんご 100 佐藤 2012/4/1 バナナ 100 木村 2012/4/2 バナナ 200 小林 2012/4/2 りんご 150 佐藤 2012/4/12 りんご 150 木村 2012/4/15 りんご 200 木村 2012/4/30 りんご 100 佐藤 2012/4/30 バナナ 150 上記の表で、 木村さんのりんごの売上を求めるのであれば、 SUMPRODUCTを使用し、下記のような数式にしていました。 =SUMPRODUCT((A1:A8="木村")*(C1:C8="りんご")*D1:D8) これに期間指定を入れた場合の数式はどのようになるか分かりません。 例えば2012/4/15~2012/4/30の木村さんのりんごの売上はどのように求めるのでしょうか? よろしくお願いいたします。

  • ExcelのVBAにて

    ExcelのVBAにて お世話になります。 今、請求書を作っています。 sheet1に請求書があり、sheet2に一覧があります。 sheet1の宛先欄に客先名を書いたら、該当する行を抜き出して請求書の欄に書き出すプログラムをお教えください。 <sheet1> 佐藤 様 ご請求額:3900円 商品名   数量  単価   金額 りんご   3   500  1500 バナナ   4   600  2400 <sheet2> 請求先  商品名  数量  単価  金額 佐藤   りんご   3  500 1500 田中   りんご   2  500 1000 田中   ばなな   1  600  600 佐藤   ばなな   4  600 2400 と、いう感じのExcelファイルです。

  • 【エクセル】複数シートの値を参照して連続で表示する(一覧シートを作る)には

    いつもお世話になってます。 エクセルで教えて下さい。 Sheet佐藤    品名   単価  数量  価格 1  いちご  100    5   500 2  ばなな  200    3   600 Sheet鈴木    品名   単価  数量  価格 1  めろん  500    1   500 2  ばなな  200    5  1000 と入力されていて、これを元に、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  佐藤  ばなな  200    3   600 3  鈴木  めろん  500    1   500 4  鈴木  ばなな  200    5  1000 と表示させたい。 Sheet佐藤・鈴木はそれぞれ行の追加・挿入・削除されることがあり、 その都度Sheet一覧に反映させられるようにしたいのですが、どのようにしたら可能でしょうか? (例えばSheet佐藤の2行目を削除した場合、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  鈴木  めろん  500    1   500 3  鈴木  ばなな  200    5  1000 となるように) また、タイトルとは質問が反れますが、 「価格」の列に「=B2(単価)*C2(数量)」という式が入っている場合、 1:式を変更されたくないので保護をかけたい。 2:保護をかけると行削除が出来ない。 3:行を挿入したら自動的に同じ式が入るようにしたい。 という希望を満たすにはマクロしかないでしょうか? (マクロは初心者でほとんどわからないので・・・) どうぞよろしくお願いします。

  • マクロで商品ごとの並び替えで一定の数を超すと改行

    (sheet1) A    B 1 りんご   2 2 ばなな 6 3 りんご 3 4 りんご 1 5 ばなな 2 6 ばなな 4  ↓ (sheet2)   A B C D E F 1りんご 2 りんご 3 りんご  1 2ばなな  6 3ばなな 2   ばなな  4 4 5 6 上記のように、sheet1の表がsheet2に転記され さらに、sheet1のB行の個数がsheet2で足して6以下は3列で転記され 6以上になると、次の行に転記される。 ようなマクロを作りたいのですが、教えていただけないでしょうか。

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

専門家に質問してみよう