- ベストアンサー
エクセル 複数行にまたがっているデーターを一つの行にまとめたい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAの一例です。 新たなシートを追加してそこにご希望の状態を表示させます。 ご提示のデータはA1から連続してあるものとします。 Sub test01() Dim x As Long, i As Long, myStr As String Dim vAK, vBK, vCI Dim myDic As Object, ns As Worksheet With Range("A1").CurrentRegion.Columns 'A1の連続範囲 x = .Rows.Count '行数取得 vAK = .Item(1).Value '1列目データ vBK = .Item(2).Value '2列目データ vCI = .Item(3).Value '3列目データ End With Set myDic = CreateObject("Scripting.Dictionary") For i = 1 To x '1行目から最終行まで myStr = vAK(i, 1) & "^" & vBK(i, 1) '1列目データ+2列目データ If Not myDic.Exists(myStr) Then 'myDicになければ myDic.Add Key:=myStr, Item:=vCI(i, 1) '追加 Else 'あれば、3列目データを追加 myDic(myStr) = myDic(myStr) + vCI(i, 1) End If Next i Set ns = Worksheets.Add(After:=ActiveSheet) 'シートを追加 With ns '転記して分離 .Cells(1, 1).Resize(myDic.Count).Value = Application.Transpose(myDic.Keys) ' .Cells(1, 3).Resize(myDic.Count).Value = Application.Transpose(myDic.Items) ' .Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Other:=True, OtherChar _ :="^", FieldInfo:=Array(Array(1, 1), Array(2, 1)) End With End Sub
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
VBAでないと難しいと思いますので一例です。(E・F・G列に展開します) (1)対象のシートタブ上で右クリック→コード表示 (2)以下のコードを貼り付け Sub データ統合() Dim a, e As Range For Each a In Range("A:A") If a.Value = "" Then Exit Sub For Each e In Range("E:E") If e.Value = "" Then Range("E1").Offset(e.Row - 1) = a Range("F1").Offset(e.Row - 1) = Range("B1").Offset(a.Row - 1) Range("G1").Offset(e.Row - 1) = Range("C1").Offset(a.Row - 1) Exit For Else If e = a And Range("F1").Offset(e.Row - 1) = Range("B1").Offset(a.Row - 1) Then x = InStr(1, Range("G1").Offset(e.Row - 1), Range("C1").Offset(a.Row - 1), vbTextCompare) If x > 0 Then Exit For Range("G1").Offset(e.Row - 1) = Range("G1").Offset(e.Row - 1) & Range("C1").Offset(a.Row - 1) Exit For End If End If Next Next End Sub (3)VBEを終了(Alt+F4キー押下)
- ookami1969
- ベストアンサー率14% (137/953)
まず一旦、B列のグループごとに集計し直して そこから作業を始めてはいかがですか? フィルタで「北海道」を抽出して「シート北海道」にまとめて移すとか。 あとは 「北海道でりんごが2件も3件もあったらどうするのか」等々 場合により処理の仕方が変わると思うのですが。。。 まぁ どちらにせよ一旦「作業用シート」で作業を行って元のシートに戻せば関数もVBAも必要ないですね。
- fujillin
- ベストアンサー率61% (1594/2576)
とりあえず、VBAでの一例です。 Sub test() Dim rmax As Long, rw As Long, r As Long Dim v1 As String, v2 As String, st As String rmax = Cells(Rows.Count, 1).End(xlUp).Row For rw = 1 To rmax - 1 st = Cells(rw, 3).Text v1 = Cells(rw, 1).Value If v1 <> "" And v1 <> Chr(27) Then v2 = Cells(rw, 2).Value For r = rw + 1 To rmax If Cells(r, 1).Value = v1 And Cells(r, 2).Value = v2 Then st = st & Cells(r, 3).Text Cells(r, 1).Value = Chr(27) End If Next r Cells(rw, 3).Value = st End If Next rw For r = rmax To 1 Step -1 If Cells(r, 1).Value = Chr(27) Then Cells(r, 1).Resize(1, 3).Delete (xlShiftUp) Next r End Sub
関連するQ&A
- エクセル 複数行にまたがっているデーターを一つの行
以前に似たような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で上記の処理を出来る方法がありますでしょうか。
- ベストアンサー
- オフィス系ソフト
- エクセル関数 データの抽出について
エクセル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にぎっしり入っています。 宜しくお願い致します。
- 締切済み
- オフィス系ソフト
- 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」と「○」になります。 以上をマクロでやりたいです。 マクロの勉強中なので色々なやり方を知りたいです。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- 同じ行の中で重複するデータを削除してつめる方法
A B C D E F 1|りんご|いちご|りんご|ぶどう|ばなな|りんご 2|すもも|ばなな| 3|りんご|りんご|びわ | 4|かき |りんご|ばなな| データが上記のように記入されている場合、 下記のように、同じ行の中で重複するデータを削除してつめる方法をご伝授ください。 A B C D E F 1|りんご|いちご|ぶどう|ばなな| 2|すもも|ばなな| 3|りんご|びわ | 4|かき |りんご|ばなな| よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル 最大値データのある行のみを残したい。
表題の質問をさせていただきます。よろしくお願いいたします。 A列には商品名 B列には販売数があるとします。 商品には一回しか出てこない物や何度も出てくるものがあります。 そこで、販売数が最大値のみの重複しない商品データにする方法をお聞きしたいのです。 できれば非表示的な処理ではなく不要行削除が望ましいです。 例 下の場合 りんご 3(重複商品の最大値) みかん 5(単独商品) りんご 1 バナナ 6(単独商品) りんご 2 イチゴ 2(重複商品の最大値) イチゴ 1 ↓にしたいのです。 りんご 3 みかん 5 バナナ 6 イチゴ 2 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- excelでシートから別シートに抽出する方法
データシートに A B C 佐藤 りんご 25個 木村 オレンジ 3個 伊藤 メロン 12個 伊藤 スイカ 2個 佐藤 イチゴ 40個 佐藤 マンゴー 8個 というデータがあったとします。 それを別のシートに A B C 佐藤 りんご 25個 イチゴ 40個 マンゴー 8個 また別のシートに A B C 伊藤 メロン 12個 スイカ 2個 といったようにAに佐藤とか伊藤とか入力するだけでB、Cが自動で抽出できるようにできますか? 出来れば関数の入力でやりたいのですがわかる人がいましたらご教授ください。
- ベストアンサー
- オフィス系ソフト
- エクセルで2列に入力された同一データを全て抽出したい
下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。 A B 1 バナナ みかん 2 りんご バナナ 3 バナナ バナナ 4 いちご みかん 5 バナナ いちご
- ベストアンサー
- オフィス系ソフト
- ★エクセル関数に詳しい方、よろしくお願いします
★エクセル関数に詳しい方、よろしくお願いします はじめまして質問を利用させていただきます。 エクセル関数に詳しい方、どうか教えてください。 いつもこの質問コーナーをヒントに↓の関数を作成して、シート1の★c列に 値を抽出することができました。 <シート1>の★c列に関数を入れて、a列、b列の一致したデータを<シート2>から抽出 =INDEX(シート1!c$2:c$10,MATCH(2,MMULT((シート2$a2:F$a10=a2:b2)*1,{1;1}),)) <シート1> <シート2 データ> a列 b列 ★c列 a列 b列 c列 101 キウイ 北海道 101 キウイ 北海道 201 キウイ 沖縄県 101 ばなな 北海道 101 ばなな 北海道 101 オレンジ 北海道 201 ばなな 沖縄県 101 いちご 北海道 101 オレンジ 北海道 101 メロン 北海道 201 オレンジ 沖縄県 201 キウイ 沖縄県 101 いちご 北海道 201 ばなな 沖縄県 201 いちご 沖縄県 201 オレンジ 沖縄県 101 メロン 北海道 201 いちご 沖縄県 201 メロン 沖縄県 201 メロン 沖縄県 ********************************************** この下からが質問内容になりますm(_ _)m ********************************************** しかし、表が少し複雑になってしまい、 上で作成した関数が使えなくなってしましました。 ●<シート2>のb列の文字が複雑になってしまった場合、 <シート1>の★c列に、うまくデータを抽出することはできますでしょうか? <シート1> <シート2 データ> a列 b列 ★c列 a列 b列 c列 101 キウイ #N/A 101 甘いキウイ 北海道 201 キウイ #N/A 101 甘いばなな 北海道 101 ばなな #N/A 101 オレンジ 北海道 201 ばなな #N/A 101 いちご小 北海道 101 オレンジ #N/A 101 メロン小 北海道 201 オレンジ #N/A 201 黄色キウイ 沖縄県 101 いちご #N/A 201 ばなな小 沖縄県 201 いちご #N/A 201 オレンジ大 沖縄県 101 メロン #N/A 201 いちご大 沖縄県 201 メロン #N/A 201 メロン大 沖縄県 もし、ご存知の方がいらっしゃいましたら、どうかご教示願います。 どうかよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excelについて
Excelに下記のようなデータが入っているのですが A列 | B列 りんご | 2 みかん | 3 ばなな | 1 りんご | 6 すいか | 7 かき | 3 みかん | 4 すいか | 8 りんご | 1 *(実際には100件ぐらいのデータが入っています。) A列で同じ「りんご」があれば、同じ行にあるB列の値を合計したいのでがどうすればよいですか? また「りんご」だけでなく他にもあればその値を合計して出したいのですが。 例えば、今回の例では「りんご」が三箇所あるので「2+6+1]で9と表示したいのですが。 イメージとしては、 A列 | B列 | C列 | D列 りんご | 2 | りんご | 9 みかん | 3 | みかん | 7 ばなな | 1 | ばなな | 1 りんご | 6 | すいか | 15 すいか | 7 | かき | 3 かき | 3 | みかん | 4 | すいか | 8 | りんご | 1 | というようにしたいです。どなたか教えてください。
- 締切済み
- オフィス系ソフト
- お願いします!エクセルで問題発生!
excelで困っています。 A B りんご 私は りんご すきです ばなな 私は ばなな すきです みかん 私は みかん すきです 私は<A行> 好きです というように、BにA行の文字列を入れるにはどうすればよいでしょうか? よろしくおねがいします・・・
- ベストアンサー
- オフィス系ソフト
お礼
多くのデーターの処理にたいしても、時間が殆どかからず出来ました。助かりました。有難うございます。