- ベストアンサー
エクセルでデータ並び替え→別シートへ
Wendy02の回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。 マクロを直しました。横に広がっても自動的にデータを取得するようにしました。細かい点も修正しました。(データの上書き,データの場所が違う時,Excelの行数が越えてしまいそうな時のメッセージ,前回よりも、出力が多少速くするようにコードの修正) フォームのボタンへは、マクロ名にR をつけましたので、再度登録しなおしてください。 '<標準モジュール> Sub ReArrangingListR() '改良版 Dim DataAr() Dim myDescript() Dim mySize() Dim OutAr() Dim DescriptArea As Range Dim r1 As Range Dim c As Range Dim i As Long Dim j As Long Dim m As Long Dim n As Integer Dim k As Integer Dim x As Integer Dim y As Integer Dim Sh1 As Worksheet Dim Sh2 As Worksheet 'シートの設定の登録 Set Sh1 = Worksheets("Sheet1") Set Sh2 = Worksheets("Sheet2") With Sh2.Range("A1").CurrentRegion If WorksheetFunction.CountA(.Cells) > 1 Then If MsgBox("前のデータを削除してよろしいですか?", vbOKCancel) = vbCancel _ Then Exit Sub .ClearContents End If End With Application.ScreenUpdating = False With Sh1 '項目の部分の設定 Set DescriptArea = .Range("C1", .Range("IV1").End(xlToLeft)) If WorksheetFunction.CountA(DescriptArea) = 0 Then MsgBox "項目名が見つかりません。" & vbCrLf & _ "項目エリアは、" & DescriptArea.Parent.Name & "の" & DescriptArea.Address & "に設定されています。", vbInformation Exit Sub End If For Each c In DescriptArea '品名の取得 x = x + 1 ReDim Preserve myDescript(1 To x) myDescript(x) = c.Value Next c For Each c In DescriptArea.Offset(1) 'サイズの取得 y = y + 1 ReDim Preserve mySize(1 To y) mySize(y) = c.Value Next c 'データ範囲(A4~) Set r1 = .Range("A4", .Range("A65536").End(xlUp)) For i = 1 To r1.Rows.Count ReDim Preserve DataAr(DescriptArea.Columns.Count, i) For n = 0 To DescriptArea.Columns.Count If n = 0 Then DataAr(n, i - 1) = r1.Cells(i, n + 1) Else DataAr(n, i - 1) = r1.Cells(i, n + 2) End If Next n Next i End With With Sh2 '次のシートへのデータの貼り付け 'タイトル .Range("A1:D1").Value = Array("店名", "品名", "サイズ", "個数") m = 2 'Sh2の行の初期値 ReDim OutAr(1 To 4) '出力バッファ For j = LBound(DataAr, 2) To UBound(DataAr, 2) For k = 1 To DescriptArea.Columns.Count If DataAr(k, j) <> Empty Then OutAr(1) = DataAr(0, j) '店名 OutAr(2) = myDescript(k) OutAr(3) = mySize(k) OutAr(4) = DataAr(k, j) .Cells(m, 1).Resize(, 4).Value = OutAr() m = m + 1 If m > Sh2.Columns(1).Cells.Count - 1 Then Application.ScreenUpdating = True MsgBox "Excel の最大行数を超えようとしていますので、中止します。" & vbCrLf & _ "データを切り分けてください。", vbInformation Exit Sub End If End If Next k Next j End With Application.Goto Sh2.Range("A1") Application.ScreenUpdating = True Set r1 = Nothing: Set Sh1 = Nothing Set Sh2 = Nothing: Set DescriptArea = Nothing MsgBox "終了!" End Sub
関連するQ&A
- エクセル重複セルについて
例えば A B 1 品名 数量 2 みかん 2 3 りんご 2 4 みかん 1 5 いちご 1 6 りんご 1 とあるとして、 他のセルに C D 1 品名 個数 2 みかん 3 3 りんご 3 4 いちご 1 のように 重複セルを削除し、なおかつ 個数もまとめるというようなことは エクセルでできないでしょうか? 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelで簡単にデータ集計する方法
お世話になります。 以下のような形式のCSVデータファイルがあります。 品名,個数,金額(=単価x個数) 例えば、 ミカン,1,80 ミカン,1,75 リンゴ,2,420 ミカン,2,140 リンゴ,10,1900 といった感じです。 これを集計して、品名毎に個数と金額の合計を得たいのですが、 Excelを使用して簡単にできる方法はございますでしょうか? 品名が少なければ、品名でソートして手作業で SUM()を設定するのですが、 今回、品名の種類が多すぎてとても手作業ではできない状況です。 どうぞよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 並び替えするには。。
エクセルのデータの並び替えが出来なく困っています。 色々と試していますが、並び替えが出来ません。 以下の様に、A2,B2には一番少ないデータが常に来ます。 それ以下のA,Bのデータの個数は不揃いです。 これらのデータをC,DでDを基準に昇順で並び替える様にしたいです。 A B C D 1品物 個数 品物 個数(昇順) 2りんご 2 =A2 =B2 3みかん 15 柿 3 4バナナ 25 マンゴー 5 5柿 3 りんご 10 6マンゴー 5 みかん 15 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelで集計結果を別シート毎にまとめたい
よろしくお願いします。 日々の売上入力をするためのシート:Sheet「売上」 A B C D E F 1 日付 担当 内容 個数 単価 合計 2 1/2 赤池 みかん 21 100 2100 3 1/2 大野 りんご 10 200 2000 4 1/5 赤池 りんご 5 190 950 5 1/5 赤池 みかん 20 80 1600 これを、 別シート(Sheet「赤池」など)の個人の給料のまとめがあるところに転記したいんです。 Sheet「赤池」 A B C D 1 (基本給などごちゃごちゃ書いてあります。) ~ 25 内容 個数 合計 営業歩合給(*0.2) 26 みかん 41 3700 740 27 りんご 5 950 190 ~ 35 合計 46 4650 930 Sheet「大野」 A B C D 1 (同上) ~ 25 内容 個数 合計 営業歩合給(*0.2) 27 りんご 10 2000 400 ~ 35 合計 10 400 こんな形にしたいと思っています。 悩んでいるのが集計結果を別シートに詰めて書けるかというところです。 簡略化してありますが、本来のみかんやりんごにあたるところは30品目ほどあり、 担当によっては全く出現しない品目もあるので、印刷などで邪魔になってしまい困っています。 どなたかExcelに明るい方、ご教授ください。
- ベストアンサー
- オフィス系ソフト
- フォントサイズを別のセルに入力された数字としたい 【エクセル】
エクセル2003での質問ですが、例として セルA1(リンゴ) A2(みかん) と文字が入力されています セルB1(10) B2(20) とある計算をした数値が入力されています。たとえば、売れた個数などと思って下さい。 やりたいことは、セルA1, A2に入力されている文字のフォントサイズをB1, B2に入力された数値に自動的にしたいのです。 売れた個数(Bセルの数値)によって文字のサイズを変え、視覚的に強調したいのです。 つまり、 リンゴ(フォントサイズ 10) みかん(フォントサイズ 20) 自分で関数などを調べてみたのですが、出来る方法がわかりませんでした。 簡単にできる方法を希望です。マクロなどは詳しくはありませんがこれを機会に勉強してみようと思います。もし可能であれば教えて下さい。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル2003で1つのシートのデータを別の2つのシートに振分けるには
エクセル2003で1つのシートのデータを、2つのシートへ振り分けるための関数はあるのでしょうか?例えば seet1に次のようなデータガあるとして A B C D 1 氏名 年齢 性別 住所 2 佐藤 30 男性 東京都 3 伊東 40 女性 大阪府 4 中村 50 男性 北海道 5 後藤 60 女性 京都府 C列「性別」に「男性」を入力すればseet2に、「女性」だったらseet3に。 氏名や年齢等を上から順番に表示(入力)させたいんですが… (seet2・3ともに、データの列の順番はseet1とは異なりなす。) 次にseet1の「6列目」に男性を入力するとseet2の「4列目」に行くように (表を作ると) seet2には A B C 1 住所 氏名 年齢 2 東京都 佐藤 30 3 北海道 中村 50 4 (seet1「6列目」の人) seet3には A B C 1 住所 氏名 年齢 2 大阪府 伊東 40 3 京都府 後藤 60 seet1に入力したデータを、性別で振り分けseet2に男性、seet3に女性を… 関数を使いできるでしょうか? 実際には同じようなデータを何度も「コピぺ」で入力していて非常に面倒くさいので、宜しくお願いします。ちょっと、分かりにくいですか?
- ベストアンサー
- その他MS Office製品
- エクセルデータ 複数行の並び替え
エクセルについての質問です 2行あるデータをまったく同じ並びにしたいのです わかりづらいですが例でご理解いただけるでしょうか? 例) A B 1 みかん りんご 2 りんご ぶどう 3 ぶどう みかん ・ ・ ・ ・ ・ ・ ↓並び替え A B 1 みかん みかん 2 りんご りんご 3 ぶどう ぶどう ※A行は固定 A行にあわせてB行をまったく同じ並びにしたい 実際のデータは上記のような単純にひらがなのみではなく数字とアルファベットがまざったデータです 例)ABC-123 うまく並び替える方法があればどなたかご教示いただけますようお願いいたします
- ベストアンサー
- オフィス系ソフト
- エクセル データの集計表を作成する
シート1のデータを集計してシート2に結果を出したいのですが、関数を使いどのように行えば良いかお教えいただけますでしょうか。 りんご A みかん A りんご りんご B ぶどう このようなデータがあり 1.その中にある項目を自動で一つ出し、 2.それぞれ済の分を集計して・・・ Aの集計 商品 個数 りんご 1 みかん 1 ぶどう 0 というようにしたいのですが、どなたかお答えいただけますでしょうか?よろしくお願い致します。
- 締切済み
- オフィス系ソフト
- エクセルで範囲内のデータを別シートにうつしたい
エクセルで特定の範囲内の数値にあてはまるデータを別のシートに新たな表として作成したいのですが、簡単な方法があれば教えてください。 例えば Sheet1 A B C 1 25 ミカン 3000 2 30 リンゴ 4500 3 5 メロン 9800 4 17 ブドウ 1800 5 50 バナナ 1000 このようなデータを次のような表にしたいのです。 A列の数値が10~30のみ行ごと抜粋する Sheet2 A B C 1 25 ミカン 3000 2 30 リンゴ 4500 3 17 ブドウ 1800 よろしくお願いいたします。
- 締切済み
- Windows 8
- エクセルでこんなことできますでしょうか?
エクセルを使ってデータ管理をしています。 エクセルで以下のようなデータがあるとします。 お店A お店B お店C 品目 個数 品目 個数 品目 個数 りんご 5 みかん 4 柿 4 みかん 3 りんご 2 パイナップル 2 柿 2 もも 3 いちご 3 もも 7 パイナップル 2 みかん 2 これを お店A お店B お店C 品目 個数 品目 個数 品目 個数 もも 7 もも 3 りんご 5 りんご 2 みかん 3 みかん 4 みかん 2 柿 2 柿 4 のように品目を揃えて表示させたいのですが、 どのようにすればよいでしょうか?
- ベストアンサー
- オフィス系ソフト
補足
Wendy02様 遅くなりましたがご回答有難うございます。 すごいです完璧です! そこで最後にひとつだけ質問です(当初の質問からかなり発展してしまいまして申し訳ありません。) 現在2行目にサイズが有りますが 3行目、4行目とサイズ欄を増やす場合はコードのどの部分を修正及び追加すればよいのでしょうか?