Excel VBA質問箱 IV

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

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


68529 / 76738 ←次へ | 前へ→

【12744】Re:VBAで文字数カウントしたいのですが(長...
回答  ichinose  - 04/4/13(火) 19:11 -

引用なし
パスワード
   ▼ima さん:
こんばんは。

>下記「ファイル1」のように、回答用シート(B列はブランク)を作成しました。ファイル1には同じシートが10人分=10シートあります。
>
>次にB列に回答してもらった後、マクロを使って「ファイル2」のように各質問ごとのシートに変えました。つまり、1人目から10人目までの回答の入った質問のシートが質問数分あります。(質問数はそのときによって変わります)
>
>今回行いたいのは、1.このファイル2の各シートのC列にB列の文字数を入れ、2.各シートあるいはいずれかのシートに文字数の合計を入れる ということです。(2.はできれば)
>LEN関数を使うことを考えましたが、シート数が多いので、また、ファイル1からファイル2を作る際のマクロにつなげて一連の作業でしたいのです。過去ログを見ましたが、類似のものが見当たらず、行き詰っています。どうかご教授ください。

非常に難しい入力データと出力データにしてしまいましたね!!
以下のコードを試してみて下さい。
元のブック(ima さんが言うファイル1)をアクティブにして実行してみて下さい。
'====================================================================
Option Explicit
Sub 統合2()
  Dim newshtnm()
  Dim oldshtnm()
  Dim idx As Long
  Dim 元ブック As Workbook
  Dim 集計ブック As Workbook
  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)).Value
  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 = _
        "=indirect(ADDRESS(" & idx & ",2,,,""[" & 元ブック.Name & "]""&d2))"
      .Range("c2:c" & UBound(oldshtnm(), 1) + 1).Formula = _
        "=len(b2)"
      With .Range("a2:c" & UBound(oldshtnm(), 1) + 1)
        .Value = .Value
        End With
      .Range("d2:d" & UBound(oldshtnm(), 1) + 1).Value = ""
      End With
     Next
   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

簡単なテストしかしていませんが・・・。
確認してみて下さい。
尚、Excel2000で確認しています。

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 発言

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