- ベストアンサー
エクセルでデータ並び替え→別シートへ
Wendy02の回答
noverena 様 こんばんは。 返事が遅くなりました。時間が経つと、この規模のものになると、再び戻るまでにしばらく時間が掛かってしまいます。時間的には、数時間なのですが。 サイズの部分を対話式に切り替えました。良く注意して設定してください。 品名 サイズ1 サイズ2 サイズ3 店名 計 -データの始まり- データの始まりを、サイズの終わりの次の次の行というように考えられていますので、その方式は守ってください。 コードはこの部分です。Sr は、サイズの行数です。 Set r1 = .Range(.Cells(SizeArea.Row + Sr + 1, 1), .Range("A65536").End(xlUp)) このコードでややこしい部分は、貼り付け部分にあります。ある程度、慣れれば読みきれるかと思います。 ご自身で加工する場合は、なるべくひとかたまりにばらして、位置をキメウチして作ったほうが分りやすいです。以下のような書き方は、掲示板のみに存在する書き方で、実務的ではありません。ロジックそのものは、それほど複雑ではありません。 実際に、お客さんから、こちらの希望している形で入るということは限りませんから、その時の状況にマクロを編集するとなると、細かく分かれていたほうがよいです。また、配列変数を使うべきかどうかは、状況や慣れにもよりますが、ややこしくするだけだと思ったら、セル(Cells(i,j))型の対応で考えたほうが良いかもしれません。 '------------------------------------------------------ '<標準モジュール> Sub ReArrangingListR2() '再改良版 Dim DataAr() Dim myDescript() Dim mySize() Dim DescriptArea As Range Dim SizeArea As Range Dim Sr As Integer 'サイズの行数 Dim Sl As Integer 'サイズの列数 Dim Sri As Integer 'サイズのカウンタ Dim Slj As Integer 'サイズのカウンタ 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 Sh1 As Worksheet Dim Sh2 As Worksheet Dim Srx As Integer '品名変数のルー部 Dim LastCol As Integer 'シートの設定の登録 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 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 Application.Goto .Range("A1") On Error Resume Next SiZeAreaSet: Set SizeArea = Application.InputBox("サイズの領域を設定してください" & vbCrLf & "必ず品名の下の行から店名の手前までを選択してください。", "サイズの取得", Type:=8) If SizeArea Is Nothing Then MsgBox "範囲を取得していません。", vbInformation If MsgBox("再度続けますか?", vbOKCancel) = vbCancel Then Exit Sub End If GoTo SiZeAreaSet End If On Error GoTo 0 Application.ScreenUpdating = False Sr = SizeArea.Rows.Count Sl = SizeArea.Columns.Count - 1 ReDim mySize(1 To Sl, 1 To Sr) 'サイズの取得 For Slj = 1 To Sl For Sri = 1 To Sr mySize(Slj, Sri) = SizeArea.Offset(, 1).Cells(Sri, Slj).Value Next Sri Next Slj 'データ範囲 Set r1 = .Range(.Cells(SizeArea.Row + Sr + 1, 1), .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:B1").Value = Array("店名", "品名") .Range("C1").Resize(, Sr).Value = WorksheetFunction.Transpose(SizeArea.Resize(, 1).Value) .Range("IV1").End(xlToLeft).Offset(, 1).Value = "数量" LastCol = .Range("IV1").End(xlToLeft).Column m = 2 'Sh2の行の初期値 For j = LBound(DataAr, 2) To UBound(DataAr, 2) For k = 1 To DescriptArea.Columns.Count If DataAr(k, j) <> Empty Then .Cells(m, 1).Value = DataAr(0, j) .Cells(m, 2).Value = myDescript(k) For Srx = 1 To Sr .Cells(m, 3).Cells(, Srx).Value = mySize(k, Srx) Next .Cells(m, LastCol).Value = DataAr(k, j) 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で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製品
- フォントサイズを別のセルに入力された数字としたい 【エクセル】
エクセル2003での質問ですが、例として セルA1(リンゴ) A2(みかん) と文字が入力されています セルB1(10) B2(20) とある計算をした数値が入力されています。たとえば、売れた個数などと思って下さい。 やりたいことは、セルA1, A2に入力されている文字のフォントサイズをB1, B2に入力された数値に自動的にしたいのです。 売れた個数(Bセルの数値)によって文字のサイズを変え、視覚的に強調したいのです。 つまり、 リンゴ(フォントサイズ 10) みかん(フォントサイズ 20) 自分で関数などを調べてみたのですが、出来る方法がわかりませんでした。 簡単にできる方法を希望です。マクロなどは詳しくはありませんがこれを機会に勉強してみようと思います。もし可能であれば教えて下さい。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルデータ 複数行の並び替え
エクセルについての質問です 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 のように品目を揃えて表示させたいのですが、 どのようにすればよいでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
Wendy様 本当にいろいろ有難うございます! こんなに親切な方に出会えて感激しています! この度は本当に有難うございました。