| 
    
     |  | ▼ima さん: こんにちは。ありがとうございます!ほぼ、ほぼ完成です。より理想に近づけるため、後は自力で修正しようとしたのですが…最後の1ステップ?で止まってしまいました。もう少しだけ診ていただけるでしょうか?
 
 直したかったのは、下記の様に、1.元ブックの「注記」(A列最後から2番目の項目)も集計ブックに載せ(C列の「文字数」はなくてもよい)にし
 
 元ブック-Sheet1(一人目)
 A    B
 1    Q1    ○○○(文字列)
 2    Q2    △△△△
 3    Q3    ◇◇
 ・    ・
 ・    ・
 ・    QX(最後の質問)×××
 ・    注記    ◎◎
 ・    回答者 AAAA
 
 集計ブック-「注記」のSheet(最後のシート)
 A列        B列        C列
 1    シート番号    回答        文字数
 2     1        ◎◎        2
 ・     2        ●●●●      4
 ・     ・        ・        ・
 ・     ・        ・        ・
 ・     X        \\\        3
 
 2.「トータルシート」にて、ichinoseさんが作ってくださった状態にすること(「注記」sheetの文字数はカウントに入らないようにする)
 でした。
 
 自分で直した箇所は、
 '====================================================================
 Option Explicit
 '====================================================================
 Sub 統合2()
 Dim newshtnm()
 Dim oldshtnm()
 Dim idx As Long
 Dim 元ブック As Workbook
 Dim 集計ブック As Workbook
 Dim total_sht As Worksheet
 idx = 0
 Set 元ブック = ActiveWorkbook
 With 元ブック
 ReDim oldshtnm(1 To .Worksheets.Count, 1 To 1)
 For idx = 1 To Worksheets.Count
 oldshtnm(idx, 1) = .Worksheets(idx).Name
 Next
 End With
 newshtnm() = Range("a1", Cells(Rows.Count, 1).End(xlUp).Offset(-2, 0)).Value
 
 >ここで、Offset(-2,0)をOffset(-1,0)にする。
 
 Set 集計ブック = mk_book(newshtnm())
 With 集計ブック
 For idx = 1 To .Worksheets.Count
 With .Worksheets(idx)
 .Range("a1:c1").Value = Array("シート番号", "回答", "文字数")
 .Range("d2:d" & UBound(oldshtnm(), 1) + 1).Value = oldshtnm()
 .Range("a2:a" & UBound(oldshtnm(), 1) + 1).Formula = _
 "=row()-1"
 .Range("b2:b" & UBound(oldshtnm(), 1) + 1).Formula = _
 "=if(indirect(ADDRESS(" & idx & ",2,,,""[" & 元ブック.Name & "]""&d2))="""",""""," & _
 "indirect(ADDRESS(" & idx & ",2,,,""[" & 元ブック.Name & "]""&d2)))"
 .Range("c2:c" & UBound(oldshtnm(), 1) + 1).Formula = _
 "=len(b2)"
 .Cells(UBound(oldshtnm(), 1) + 2, 3).Formula = _
 "=sum(c2:c" & UBound(oldshtnm(), 1) + 1 & ")"
 With .Range("a2:b" & UBound(oldshtnm(), 1) + 1)
 .Value = .Value
 End With
 .Range("d2:d" & UBound(oldshtnm(), 1) + 1).Value = ""
 End With
 Next
 Set total_sht = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count))
 '   ↓ここから、トータルシートの作成
 With total_sht
 .Name = "トータルシート"
 .Range("a1:b1").Value = Array("シート名", "文字数小計")
 .Range("a2:a" & UBound(newshtnm(), 1) + 1).Value = newshtnm()
 
 >ここで .Range("a2:a" & UBound(newshtnm(), 1)).Value = newshtnm() とする。
 
 .Range("b2:b" & UBound(newshtnm(), 1) + 1).Value = _
 "=indirect(address(" & UBound(oldshtnm(), 1) + 2 & ",3,,,a2))"
 
 >ここで .Range("b2:b" & UBound(newshtnm(), 1)).Value = _
 >        "=indirect(address(" & UBound(oldshtnm(), 1) & ",3,,,a2))"
 >とする。
 
 .Cells(UBound(newshtnm(), 1) + 2, 2).Formula = _
 "=sum(b2:b" & UBound(newshtnm(), 1) + 1 & ")"
 
 >ここで .Cells(UBound(newshtnm(), 1) + 1, 2).Formula = _
 >        "=sum(b2:b" & UBound(newshtnm(), 1) & ")" とする。
 
 End With
 End With
 End Sub
 '====================================================================
 Function mk_book(shtnm()) As Workbook
 Dim idx As Long
 Set mk_book = Workbooks.Add
 With mk_book
 For idx = LBound(shtnm()) To UBound(shtnm())
 If idx > .Worksheets.Count Then
 .Worksheets.Add after:=.Worksheets(.Worksheets.Count)
 End If
 .Worksheets(idx).Name = shtnm(idx, 1)
 Next idx
 End With
 End Function
 
 この直し方が正しいのかどうか自信ないのですが、とりあえず、シートの形だけは希望通りになりました。問題は、「トータルシート」のB列の「文字数小計」の数値が正しくないということです。B列に入っている数式(B2の場合)
 =INDIRECT(ADDRESS(30,3,,,A2))
 がおかしいのではと思うのですが、ここから先がお手上げです。
 どうぞよろしくお願いします。
 PS 連日時間を割いてくださってありがとうございます。また、本当に親切にお答えくださって感謝しています。おっしゃるとおり、コードを比較するだけも大変勉強になります。
 
 |  |