戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
複数ファイル内に記載された評価を、1シートに集計する

    [194125] 複数ファイル内に記載された評価を、1シートに集計する-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ nil -(2021/09/06(04:53))
    □U R L/

      以下のようなマクロを作成したいのですが、
      アウトプットファイル(集計)の作成に苦労しています。
      (複数の集計項目があるため…)


      私はマクロの修正は何度か行ったことがあるのですが、
      1から作成するのは初めてで、只今 マクロ猛勉強中です。

      どなたかサンプルコードを頂けないでしょうか?
      よろしくお願い致します。


      ■ インプットファイル
       〇 学生同士、相手の作品を評価シートに記載する。
       〇 評価シートはエクセルファイルで、1件1葉である。
       〇 1人が行う評価は月に0件の場合もあれば、複数件の場合もある(上限なし)
       〇 インプットファイルは同じフォルダ配下にあります


       <サンプル(EXCEL) >

       ファイル名 → 鈴木2021.9.10.xlsx

            A     B    C  
         1 評価者  被評価者 評価
         2 鈴木   田中    〇


      ■ アウトプットファイル>
        〇 月ごとに・・・
           評価を行った件数
           評価をされた件数 を一覧にする


        <サンプル(EXCEL) >

         ファイル名 → 一覧.xlsx
          シート名 → 8月, 9月, 10月・・・

            A      B          C    D E 
         1 評価者  自分が評価した件数   自分が評価された件数
         2 〇 △  ×
         3 鈴木    3    3 2 1
         4 田中 5    1 0 0
      5  伊藤 2    0 5 4
      6 ・・・・・


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194126] Re[1]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ nil -(2021/09/06(06:53))
    □U R L/

      すみません。
      インプットファイルのファイル名を以下の通り訂正させてください。
      (1人が行う評価は1日に複数件の場合もあるため)

      (誤) ファイル名 → 鈴木2021.9.10.xlsx
      (正) ファイル名 → 鈴木2021.9.10_01.xlsx
          鈴木2021.9.10_02.xlsx




    [194127] Re[2]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2021/09/06(17:45))
    □U R L/

      > シート名 → 8月, 9月, 10月・・・

      年は、2021年と考えてよいですか。







    [194128] Re[3]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2021/09/06(21:31))
    □U R L/
      たたき台です。
      
       Sub test()
          Dim fso As Object, f As Object
          Dim dic As Object
          Dim ws As Worksheet, ym As String
           Dim p As String, w()
          Dim 評価者 As String, 被評価者 As String, 評価 As String
          Dim n As Long
          
          Set fso = CreateObject("scripting.filesystemobject")
          Set dic = CreateObject("scripting.dictionary")
          
          Set ws = ActiveSheet      '★アウトプットファイル(シート)
          ym = "2021." & Val(ActiveSheet.Name)
          
          p = "D:\test\"      '★インプットファイルの場所
      
          ReDim w(1 To fso.getfolder(p).Files.Count, 1 To 5)
      
          For Each f In fso.getfolder(p).Files
              If LCase(f.Name) Like "*" & ym & ".*.xlsx" Then
                  With Workbooks.Open(f.Path).Sheets(1)
                      評価者 = .Range("A2").Value
                      被評価者 = .Range("B2").Value
                      評価 = .Range("C2").Value
                      .Parent.Close False
                  End With
                  n = InStr("**〇△×", 評価)
                  If n > 2 Then
                      If Not dic.exists(評価者) Then
                          dic(評価者) = dic.Count + 1
                          w(dic(評価者), 1) = 評価者
                      End If
                      If Not dic.exists(被評価者) Then
                          dic(被評価者) = dic.Count + 1
                          w(dic(被評価者), 1) = 被評価者
                      End If
                      w(dic(評価者), 2) = w(dic(評価者), 2) + 1
                      w(dic(被評価者), n) = w(dic(被評価者), n) + 1
                  End If
              End If
          Next
              
          With ws.UsedRange.Offset(2)
              .ClearContents
              .Resize(dic.Count, 5).Value = w
          End With
       
       End Sub
      
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194129] Re[4]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2021/09/06(23:22))
    □U R L/

      ↑が難しければ、マクロを使わずに

      1)一覧.xlsxに作業用シートを追加
      2)Power Queryで、インプットファイルの全データを1)に集約
      3)COUNTIFS関数で、件数を算出

      というのが簡単です。






    [194142] Re[5]: 複数ファイル内に記載された評価を、1シートに集計する-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ nil -(2021/09/09(00:45))
    □U R L/

      マナさん、

      サンプルコード意図したように動きました!

      年は2021年度を集計という条件です。

      いま頂いたコードを勉強中です。取り急ぎお礼を言わせてください。

      分からないところが出てきたら質問させてください。

      PowerQueryという手もあるんですね。こちらも調べてみます!




      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194621] Re[6]: 複数ファイル内に記載された評価を、1シートに集計する-

    迷宮入りorほかあたって見ます・・ / 記事引用/メール受信=OFF■

    □投稿者/ nil -(2022/01/16(17:06))
    □U R L/
      こんにちは。
      
      アウトプットの形式が以下のように変更になってしまいました。
      A〜D列は変更不可。 E〜M列も別のデータ(計算式等)が入っています。
      
      
      ■ アウトプットファイル>
      
          A     B    C   D       N          O     P     Q    
       8                          自分が評価された件数
       9 項番 課名 役職 名前     自分が評価した件数        良好 普通 その他
      10  1   役員  社長 鈴木                  
      11  1  総務 部長 田中
      12  2  総務 課長 山田
      13  3  総務 係長 久保田
      14  4  総務 主任 吉田
      15  1  経理 部長 山田
      16  2  経理 課長 古谷
      
      
      
      
      教えて頂いたマクロを色々なサイトを見ながら研究して(完全に理解できたとは言い難いですが…)以下部分を変更すれば良いのは分かったのですが、どう直したら良いかが分かりません。
      
          With ws.UsedRange.Offset(2)
              .ClearContents
              .Resize(dic.Count, 5).Value = w
          End With
       
      
      教えていただけないでしょうか? 何度もごめんなさい。
      
      
      もう1つ 勉強のために確認させて頂きたいのですが
      
          n = InStr("**〇△×", 評価)
      
      というコードがありますが
      ( ※の部分は    n = InStr("**良好普通その他", 評価)   に変更します)
      
      "**" は何故必要なのでしょうか?


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194623] Re[7]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2022/01/16(18:50))
    □U R L/

      >アウトプットの形式が以下のように変更になってしまいました。

      インプットファイルは変わらなのですか?





    [194624] Re[8]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2022/01/16(20:27))
    □U R L/
      >n = InStr("**〇△×", 評価)
      
      評価が、○なら3文字目、△なら4文字目、×なら5文字目という意味です
      以下のほうがわかりやすかったですね。
      
      Select Case 評価
          Case "○": n = 3
          Case "△": n = 4
          Case "×": n = 5
          Case Else: n = 0
      End Select
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194625] Re[9]: 複数ファイル内に記載された評価を、1シートに集計する-

    保留中です・・・ / 記事引用/メール受信=OFF■

    □投稿者/ nil -(2022/01/17(03:09))
    □U R L/

      マナーさん、こんばんは
      お返事ありがとうございます!

      インプットファイルは
      ○が『良好』に、△が『普通』に、×が『その他』に
      変わりました。

      Instrの解説ありがとうございます!
      だいぶ勘違いをしてました(汗)



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194632] Re[10]: 複数ファイル内に記載された評価を、1シートに集計する-

    保留中です・・・ / 記事引用/メール受信=OFF■

    □投稿者/ nil -(2022/01/17(18:25))
    □U R L/

      マナさん、こんばんは。

      インプットファイルは
      正確に言うと以下の箇所も変更されています。
      (プログラム上、自分で書き換えられる範囲なので
       前回投稿でお伝えしませんでした。ごめんなさい)

      ■変更点@
      評価者は  A2→AD4
      被評価者は B2→AD7
      評価は   C2→AD9

      ■変更点A
      ファイル名は
      鈴木2021.9.10_01.xlsx から 鈴木健一2021.9.10_01.xlsx へ
      (同じ苗字の人がいるため)



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [194633] Re[11]: 複数ファイル内に記載された評価を、1シートに集計する-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2022/01/17(21:34))
    □U R L/
      配列w の1次元目のインデックスを
      愛とプットファイルの並びとすればよいです。
      
          Set ws = ActiveSheet      '★アウトプットファイル(シート)
          For Each c In ws.Range("C10", ws.Range("C10").End(xlDown))
              評価者 = c.Value
              dic(評価者) = dic.Count + 1
          Next
          
          ReDim w(1 To dic.Count, 1 To 4)
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194725] Re[12]: 複数ファイル内に記載された評価を、1シートに集計する-

    迷宮入りorほかあたって見ます・・ / 記事引用/メール受信=OFF■

    □投稿者/ nil -(2022/02/08(13:56))
    □U R L/
      こんにちは。
      色々試してみましたが、ダメでした・・・
      
      
      以前マナーさんから以下のアドバイスを頂きましたが、理解できませんでした。
      
      
      >配列w の1次元目のインデックスを
      >iとアウトプットファイルの並びとすればよいです。
      
      
      以下のVBAを具体的にどこへ入れれば良いのでしょうか?
      時間が経ってしまい大変申し訳ありませんが、教えてください。
      よろしくお願い致します。
      
      
          Set ws = ActiveSheet      '★アウトプットファイル(シート)
          For Each c In ws.Range("C10", ws.Range("C10").End(xlDown))
              評価者 = c.Value
              dic(評価者) = dic.Count + 1
          Next
          
          ReDim w(1 To dic.Count, 1 To 4)
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G