Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


68437 / 76738 ←次へ | 前へ→

【12839】Re:VBAで文字数カウントしたいのですが(...
質問  ima  - 04/4/16(金) 17:29 -

引用なし
パスワード
   ▼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 連日時間を割いてくださってありがとうございます。また、本当に親切にお答えくださって感謝しています。おっしゃるとおり、コードを比較するだけも大変勉強になります。

0 hits

【12739】VBAで文字数カウントしたいのですが(長... ima 04/4/13(火) 17:04 質問
【12744】Re:VBAで文字数カウントしたいのですが(長... ichinose 04/4/13(火) 19:11 回答
【12755】Re:VBAで文字数カウントしたいのですが(... ima 04/4/14(水) 11:23 質問
【12784】Re:VBAで文字数カウントしたいのですが(... ichinose 04/4/14(水) 19:09 発言
【12802】Re:VBAで文字数カウントしたいのですが(... ima 04/4/15(木) 13:42 質問
【12814】Re:VBAで文字数カウントしたいのですが(... ichinose 04/4/15(木) 21:32 回答
【12839】Re:VBAで文字数カウントしたいのですが(... ima 04/4/16(金) 17:29 質問
【12861】Re:VBAで文字数カウントしたいのですが(... ichinose 04/4/17(土) 11:50 発言
【12910】Re:VBAで文字数カウントしたいのですが(... ima 04/4/19(月) 16:23 お礼
【12840】Re:VBAで文字数カウントしたいのですが(... ima 04/4/16(金) 17:33 発言

68437 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free