エクセル2000マクロでチームの合計を別のシートに

このQ&Aのポイント
  • エクセル2000マクロを使用して、グラウンドゴルフのチーム別成績順位表を作成する方法を教えてください。
  • マクロ内で、指定のワークシートからチームごとの成績を抜き出し、別のワークシートに表示します。
  • チームごとの合計点を計算し、チーム別成績順位表を作成します。
回答を見る
  • ベストアンサー

エクセル2000マクロ、チームの合計を別のシートに

グラウンドゴルフで、1チーム5名、50チームで全員が2ラウンドのゲームのチーム別成績順位表を作ろうとしています。 ”2ラウンド集計”のワークシートに団体戦の個人成績表がありますので、これを元に、”チーム別”ワークシートに各チームだけの成績を抜き出して表示したくて、次のマクロをした結果、添付した画像のようになります。 解決方法を教えていただきたくよろしくお願いいたします。 Sub チーム成績順() ' ' チーム成績順 Macro ' マクロ記録日 : 2013/8/16 ユーザー名 : HAYAO MAEBARA ' 'Dim n Sheets("チーム別").Activate For n = 1 To 50 Cells(n + 4, 2).Value = Sheets("2ラウンド集計").Cells(n * 5 + 5, 2).Value Cells(n + 4, 3).Value = Sheets("2ラウンド集計").Cells(n * 5 + 5, 3).Value Cells(n + 4, 4).Value = Sheets("2ラウンド集計").Cells(n * 5 + 5, 4).Value Cells(n + 4, 6).Value = Sheets("2ラウンド集計").Cells(n * 5 + 5, 6).Value Cells(n + 4, 7).Value = Sheets("2ラウンド集計").Cells(n * 5 + 5, 7).Value Cells(n + 4, 8).Value = Sheets("2ラウンド集計").Cells(n + 9, 8).Value + Cells(n + 10, 8).Value + Cells(n + 11, 8).Value + Cells(n + 12, 8).Value + Cells(n + 13, 8).Value Cells(n + 4, 9).Value = Sheets("2ラウンド集計").Cells(n + 9, 9).Value + Cells(n + 10, 9).Value + Cells(n + 11, 9).Value + Cells(n + 12, 9).Value + Cells(n + 13, 9).Value Cells(n + 4, 10).Value = Sheets("2ラウンド集計").Cells(n + 9, 10).Value + Cells(n + 10, 10).Value + Cells(n + 11, 10).Value + Cells(n + 12, 10).Value + Cells(n + 13, 10).Value Cells(n + 4, 11).Value = Sheets("2ラウンド集計").Cells(n + 9, 11).Value + Cells(n + 10, 11).Value + Cells(n + 11, 11).Value + Cells(n + 12, 11).Value + Cells(n + 13, 11).Value Cells(n + 4, 12).Value = Sheets("2ラウンド集計").Cells(n + 9, 12).Value + Cells(n + 10, 12).Value + Cells(n + 11, 12).Value + Cells(n + 12, 12).Value + Cells(n + 13, 12).Value Cells(n + 4, 13).Value = Sheets("2ラウンド集計").Cells(n + 9, 13).Value + Cells(n + 10, 13).Value + Cells(n + 11, 13).Value + Cells(n + 12, 13).Value + Cells(n + 13, 13).Value Cells(n + 4, 14).Value = Sheets("2ラウンド集計").Cells(n + 9, 14).Value + Cells(n + 10, 14).Value + Cells(n + 11, 14).Value + Cells(n + 12, 14).Value + Cells(n + 13, 14).Value Cells(n + 4, 15).Value = Sheets("2ラウンド集計").Cells(n + 9, 15).Value + Cells(n + 10, 15).Value + Cells(n + 11, 15).Value + Cells(n + 12, 15).Value + Cells(n + 13, 15).Value Cells(n + 4, 16).Value = Cells(n + 4, 8).Value + Cells(n + 4, 12).Value Cells(n + 4, 17).Value = Cells(n + 4, 9).Value + Cells(n + 4, 13).Value Cells(n + 4, 18).Value = Cells(n + 4, 10).Value + Cells(n + 4, 14).Value Cells(n + 4, 19).Value = Cells(n + 4, 11).Value + Cells(n + 4, 15).Value Cells(n + 4, 20).Value = Cells(n + 4, 16).Value * (-3) Cells(n + 4, 21).Value = Cells(n + 4, 19).Value + Cells(n + 9, 20).Value Cells(n + 4, 22).Value = Cells(n + 4, 21).Value / 2 Next n End Sub

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

質問内容と添付画像の関係が全く理解できません。 マクロコードを見ると、チーム名には関係なく、単純にセルの値を代入したり加算したりしているだけですから、そもそもマクロを使用するよりも関数で対応するほうが、簡便でわかりよいと思います。 関数で対応する場合は、元データのレイアウトと表示したいシートのレイアウトを例示されれば、具体的な数式が提示できると思います。 また、チームごとの集計をしたいということなら、別のシートに一覧を作成しなくても「集計」の機能を利用すれば、ご希望のチーム別の順位のわかる集計ができます。 ご使用のエクセルのバージョンが明記されていないので2007以降のバージョンンで説明すると、 まず準備として、「データ」タブの「並べ替え」で最優先されるキーで「チーム名」をレベルの追加で次に優先されるキーを「2ラウンドの合計」を指定して並べ替えを実行しておきます。 このようなリストでデータタブの「小計」をクリックし、グループの基準を「チーム名」、集計するフィールドを「2ラウンドの合計」を選択して、必要に応じて「グループごとに改ページを挿入する」にチェックを入れてOKしてください。

h-maebara
質問者

お礼

ありがとうございました。

h-maebara
質問者

補足

説明不足で申し訳ありません。 エクセル2000を使用しています。質問の方法も言葉不足でご迷惑をかけました。 グラウンドゴルフは高齢者に好まれるスポーツですが、このゲームのスコア集計に時間がかかるということで、スコアのデータを入れたら、後はマクロのボタンを押していくと集計が出来る方法までをいろいろ教えていただきながら個人成績表までは何とか出来上がりました。 その際にチーム別の集計は出来ないかとの問い合わせも多かったので、個人成績表を使って、マクロボタンで一発で「チーム別成績表」を作成しようと考えたものです。 アドバイスいただきました「集計」の機能を利用することで解決できそうですが、エクセル2007と、エクセル2000の違いから表現がちょっと違うみたいですから、こちらももう少し勉強してみます。 貴重なお時間を割いていただきありがとうございました。

関連するQ&A

  • エクセル、マクロにて月を指定して別シートに表示はできるのでしょうか?

    エクセル、マクロにて月を指定して別シートに表示はできるのでしょうか? 毎度毎度申し訳ありません。開始日の検索で、5月と打っただけ5月分だけ表示6月とうったら6月が出て来る方法なんてあるのでしょうか?ありましたら、下記のコードをどう直せいいか教えて頂けますでしょうか?宜しくお願い致します。 【作業内容:場所と月を検索、さらに要らない列を消し、別シートに表示】【検索月はC】  A B   C     D     E     F   G   H    I   J    K 部署 No.  開始日  終了日   担当者  設備  刃名 枚数  内容 工数 備考 茨城 1 2010/5/7  2010/5/10  B緒  L型   K  16枚  研削 6.00 東和電気 東京 2 2010/6/7  2010/6/8   B緒  L型   K  16枚  研削 6.83 東和電気 茨城 3 2010/5/18  2010/5/19  B緒  L型   K  16枚  研削 1.50 東和電気 茨城 4 2010/5/16  2010/5/19  B緒  L型   K  16枚  研削 6.83 東和電気 茨城 5 2010/6/10  2010/6/10  B緒  L型   K  16枚  研削 6.83 東和電気 ↓ A  B   C     D    E     F   部署 No.  開始日  担当者  内容   工数 茨城 1 2010/5/7  B緒   研削   6.00 茨城 3 2010/5/16  B緒  掃除   6.83 茨城 4 2010/5/18  B緒  出荷   1.50 【コード】 Sub 検索() Dim R As Long Dim Row2 As Long '●Sheet2書込み行 Sheets("集計表").Range("A5").CurrentRegion.Clear Sheets("集計表").Range("A5:F5").Value = Array("依頼部署", "依頼書No.", "研磨開始日", "担当者", "作業内容", "作業内容", "工数") Row2 = 5 For R = 2 To Sheets("日報").Cells(Rows.Count, "A").End(xlUp).Row If Sheets("日報").Cells(R, "A") = Sheets("集計表").Range("A2") And _ Sheets("日報").Cells(R, "C") >= Sheets("集計表").Range("B2") And _ Sheets("日報").Cells(R, "C") <= Sheets("集計表").Range("C2") Then Row2 = Row2 + 1 Sheets("集計表").Cells(Row2, "A").Value = Sheets("日報").Cells(R, "A").Value Sheets("集計表").Cells(Row2, "B").Value = Sheets("日報").Cells(R, "B").Value Sheets("集計表").Cells(Row2, "C").Value = Sheets("日報").Cells(R, "C").Value Sheets("集計表").Cells(Row2, "D").Value = Sheets("日報").Cells(R, "E").Value Sheets("集計表").Cells(Row2, "E").Value = Sheets("日報").Cells(R, "I").Value Sheets("集計表").Cells(Row2, "F").Value = Sheets("日報").Cells(R, "J").Value End If Next R '●結果の並べ替え If Row2 = 5 Then MsgBox "該当データなし!" Else Sheets("集計表").Range("A5:D" & Row2).Sort _ Key1:=Range("B6"), Order1:=xlAscending, _ Header:=xlYes, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, SortMethod:=xlPinYin Sheets("集計表").Select End Sub

  • マクロの構文でわからない所があります

    エクセル2013です。 退職者の作成したマクロの中で 何を処理しているのか、わからないところが あります。 以下の構文ですが、 これは、何がどうした時、どういう処理 をするのでしょうか? f8を押しながら見ていてもよくわかりません。 よろしくお願いします。 Do While Cells(Z, 6).Value <> "" If Cells(Z, 1).Value <> "" Then Sheets("集計表").Cells(Z, 1).Value = Cells(Z, 1).Value Else: Sheets("集計表").Cells(Z, 1).Value = "-" If Cells(Z, 5).Value <> "" Then Sheets("集計表").Cells(Z, 5).Value = Cells(Z, 5).Value Else: Sheets("集計表").Cells(Z, 5).Value = "-" If Cells(Z, 6).Value <> "" Then Sheets("集計表").Cells(Z, 6).Value = Cells(Z, 6).Value Else: Sheets("集計表").Cells(Z, 6).Value = "-" Z = Z + 1 Loop

  • エクセル マクロ シートの集計

    エクセル・マクロについての質問です。1つのブックに、複数の単票と集計表があります。単票の名称はすべて「○課△係」で、2~10シート程度でシート数は変動します。集計表は1シートで、名称は”「集計」です(その他に1シート有り)。単票と集計表のA列が一致した行(の特定の列)に、単票から集計表へデータを転記します。単票ごとに処理を繰り返し、集計表を完成させたいのですが、エラーが出て実行できません。お忙しいところ誠に恐縮ですが、ご教授方宜しくお願いいたします。 Sub 集計() Dim T As Worksheet Dim p As Long, q As Long, n As Long, m As Long, y As Long T.Name = "*課*係" For Each T In Worksheets For n = 10 To 50 ' p = T.Cells(n, 1) For m = 2 To 550 If Sheets("集計").Cells(m, 1) = p Then y = 5 + T.Range("B4") Sheets("集計").Cells(m, y).Value = q Exit For End If Next End Sub

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

  • VBA 別シートからコピー貼付け(複数列)

    別シートからコピー貼付け(複数列)をしたいのですが,同一シートからのコピー貼付けはネットから以下のマクロでできました。 しかし,別シートsheet1からsheet2ヘコピーで修正しましたが,「アプリケーション定義またはオブジェクト定義のエラーです。」となります。どなたかご教授よろしくお願いします。 修正したマクロ Sub sampel() Dim i As Long For i = 2 To Range("E65536").End(xlUp).Row Step 2 Sheets("sheet2").Range(Cells(i + 1, 2), Cells(i + 1, 85)).Value = _ Sheets("sheet1").Range(Cells(i, 5), Cells(i, 88)).Value Next i End Sub 参考としたマクロ http://www.excel.studio-kazu.jp/kw/20041208152106.html Sub sampel() Dim i As Long For i = 2 To Range("E65536").End(xlUp).Row Step 2 Range(Cells(i + 1, 2), Cells(i + 1, 85)).Value = _ Range(Cells(i, 5), Cells(i, 88)).Value Next i End Sub

  • エクセル マクロ チェックボックス

    sheet1にチェックボックスが3つあり、マクロを実行するコマンドボタンが1つあります。 チェックボックスにレ点を入れることにより、sheet4のデータからsheet2にグラフを作成しようと考えてますが、エラーが出てしまい解決できません。 どのように訂正したらいいのか教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Dim GraphRange As String Dim Graph As ChartObject Dim lastRow As Long Set Graph = Sheets("sheet2").ChartObjects.Add(150, 27, 350, 200) lastRow = Sheets("sheet4").Range("A" & Rows.Count).End(xlUp).Row GraphRange = Sheets("sheet4").Range(Cells(1, 1), Cells(lastRow, 1)).Value If Sheets("sheet1").CheckBox1.Value = True Then 'CheckBox1にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 2), Cells(lastRow, 2)).Value End If If Sheets("sheet1").CheckBox2.Value = True Then 'CheckBox2にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 3), Cells(lastRow, 3)).Value End If If CheckBox3.Value = True Then 'CheckBox3にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 4), Cells(lastRow, 4)).Value End If Graph.Chart.ChartWizard Source:=Sheets("sheet4").Range(GraphRange).Value, _ Gallery:=xlLine, Format:=1, PlotBy:=xlColumns, _ CategoryLabels:=1, SeriesLabels:=1, HasLegend:=True End Sub

  • エクセル2003マクロの再編集

    Sub test() Dim 行1 As Long, 最終行 As Long, 行2 As Long Sheets("Sheet2").Cells.ClearContents Sheets("Sheet1").Activate 最終行 = Range("C65536").End(xlUp).Row 行2 = 1 For 行1 = 1 To 最終行 Sheets("Sheet2").Cells(行2, 1).Resize(1, 3) = Range(Cells(行1, 1), Cells(行1, 3)).Value Sheets("Sheet2").Cells(行2, 3).Value = Abs(Sheets("Sheet2").Cells(行2, 3).Value) If Range("A" & 行1).Value = "BBBB1" Then Sheets("Sheet2").Range("A" & 行2) = Range("A" & 行1) & "-1" Sheets("Sheet2").Cells(行2 + 1, 1).Resize(1, 3) = Range(Cells(行1, 1), Cells(行1, 3)).Value Sheets("Sheet2").Range("A" & 行2 + 1) = Range("A" & 行1) & "-2" 行2 = 行2 + 1 End If If Range("A" & 行1) = "" Then 行2 = 行2 - 1 Sheets("Sheet2").Range("C" & 行2) = Sheets("Sheet2").Range("C" & 行2) + Range("C" & 行1) End If 行2 = 行2 + 1 Next 行1 End Sub を編集したいのですが全然図りません ご指導お願いします 元データ AAAA5 9601  950 BBBB1 9660  150 ASAS9 9654  -50 AXCW5 9603  1375 以下の用にマクロで変換する用に出来たのですが 【1】 BBBB1だけではなくAAAA5も対処になったときの 追加方法です 元データは一切変更が出来ません ※フォントの変更も不可です 【2】 元データと変換後データがSheet1からSheet2になっていますが Sheet1の元は範囲はA1~C400で変換後をSheet1E1~G400にしたいのです AAAA5 9601  950  BBBB1-1 9660  150  BBBB1-2 9660  150 ASAS9 9654  50 AXCW5 9603  1375

  • エクセルVBAで複数シートにマクロ実行

    エクセル2000です。 Sub 行列非表示() For i = 2 To 120 If Cells(i, "A").Interior.ColorIndex = 3 Then Cells(i, "A").EntireRow.Hidden = True End If Next i For n = 1 To 50 If Cells(1, n).Interior.ColorIndex = 3 Then Cells(1, n).EntireColumn.Hidden = True End If Next n End Sub 上記マクロを、シートAAAとCCCとEEEに実行する場合、 Sub test() Sheets("AAA").Activate Call 行列非表示 Sheets("CCC").Activate Call 行列非表示 Sheets("EEE").Activate Call 行列非表示 End Sub と書くよりももっとすっきり実行する方法は無いでしょうか? 各シートの非表示対象の行や列はそれぞれことなります。 また Sub 行列非表示 自体も、もっと効率的にやる方法はないでしょうか?

  • excel;マクロ;表現をもっと縮小したい

    質問します。下記のようなモジュールで中に同様の数字のみが順に変わるブロック繰り返しが多数あるのですが、もっと簡略化した表現 が可能でしょうか。よろしくお願いします。 Sub usb_count() d = Range("A65536").End(xlUp).Row j = 3 For i = 2 To d Select Case Cells(i, "B") Case Sheets("sheet2").Cells(4, "A") Sheets("sheet2").Cells(4, "B").Value = Sheets("sheet2").Cells(4, "B").Value + 1 If Cells(i, "K").Value = "USB" Then Sheets("sheet2").Cells(4, "C").Value = Sheets("sheet2").Cells(4, "C").Value + 1 Else Sheets("sheet2").Cells(4, "D").Value = Sheets("sheet2").Cells(4, "D").Value + 1 ' End If ‘------------------------------------------------------------------------------------------------------------------------------------ Case Sheets("sheet2").Cells(5, "A") Sheets("sheet2").Cells(5, "B").Value = Sheets("sheet2").Cells(5, "B").Value + 1 If Cells(i, "K").Value = "USB" Then Sheets("sheet2").Cells(5, "C").Value = Sheets("sheet2").Cells(5, "C").Value + 1 Else Sheets("sheet2").Cells(5, "D").Value = Sheets("sheet2").Cells(5, "D").Value + 1 End If ‘----------------------------------------- ‘以下上記の‘-----------から‘-----------で囲まれたブロックが( )内の数字が6から20まで繰り返され続く が略す End Select Next i End Su

  • QNo.2826776の質問の続き 表から別シートに一覧表を作成したいのですが

    質問の続きになってしまうのですが sheet1からsheet2へ転記するVBA Private Sub Worksheet_Change(ByVal Target As Range) Sheets("Sheet2").Cells.ClearContents Sheets("Sheet2").Cells(1, 1).Value = "日付" Sheets("Sheet2").Cells(1, 2).Value = "応援に行く人" Sheets("Sheet2").Cells(1, 3).Value = "応援をもらう店舗" r2 = 1 For r = 2 To Range("A65536").End(xlUp).Row For c = 2 To 256 If Cells(r, c) <> "" Then r2 = r2 + 1 Sheets("Sheet2").Cells(r2, 1).Value = Sheets("Sheet1").Cells(r, 1) Sheets("Sheet2").Cells(r2, 2).Value = Sheets("Sheet1").Cells(1, c) Sheets("Sheet2").Cells(r2, 3).Value = Sheets("Sheet1").Cells(r, c) End If Next c Next r End Sub と教えていただきました。 もうひとつ条件を入れたいのですが「"休"を無視する」 座標やシート名の入れ替えは理解できたのですが、やはり難しく ここを頼ってしまいました。教えてください。よろしくお願いします。

専門家に質問してみよう