Excel VBA質問箱 IV

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

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


47748 / 76738 ←次へ | 前へ→

【33940】Re:改ページの数を数えたいのですが・・・
発言  ichinose  - 06/1/24(火) 8:05 -

引用なし
パスワード
   ▼こんばんは さん:
おはようございます。
何となくわかってきました。


>
>A sheet
>> 列A    B:F
>>1NO(文字列)情報 
>>2DTQA654FR  AのNoに対しての情報行
>>3bb      bb情報
>>4ccc     ccc情報
>>5bbb     bbb情報
>
>B sheet
>> 列A    B:F
>>1NO(文字列)情報 
>>2DTQA654FR  AのNoに対しての情報行
>>3bbb     bbb情報
>>4cc      cc情報
>>5bbb     bbb情報
>
>C sheet
>> 列A    B:F
>>1NO(文字列)情報 
>>2DTQA654FR  AのNoに対しての情報行
>>3bbb     bbb情報
>>4ccc     ccc情報
>>5bb      bb情報
↑この情報を有した入力データとしての
ブックをBook1.xlsとします。

コードをどこに記述するのかが明確になっていませんが、
上記のブックにしましょう。

まず、標準モジュールに
'==================================================
Sub main()
  Dim idx As Long
  Dim ans As Collection
  Dim sht As Worksheet
  Set ans = no_dup(Workbooks("book1.xls")) 'この引数に検査するブックを指定
  Set sht = Workbooks.Add.Worksheets(1)
  sht.Range("a1:h1") = Array("NO", "inf1", "inf2", "inf3", "inf4", "inf5", "", "シート名")
  For idx = 1 To ans.Count
    With ans.Item(idx)
     sht.Range(sht.Cells(idx + 1, 1), sht.Cells(idx + 1, 6)).Value = .infarray
     If .scnt < ThisWorkbook.Sheets.Count Then
       sht.Cells(idx + 1, 8).Value = .shtnm
       End If
     End With
    Next
End Sub
'===================================================================
Function no_dup(bk As Workbook) As Collection
  Dim i_data As Class1
  Dim idx As Long
  Dim rng As Range
  Dim crng As Range
  Dim shnm As String
  Dim sdx As Long
  On Error Resume Next
  Set no_dup = New Collection
  For idx = 1 To bk.Sheets.Count
    With bk.Sheets(idx)
     sdx = idx
     Set rng = .Range("a2", .Cells(.Rows.Count, 1).End(xlUp))
     If rng.Row > 1 Then
       shnm = .Name
       For Each crng In rng
        Set i_data = New Class1
        With i_data
          .infarray = crng.Resize(1, 6).Value
          .shtnm = shnm
          .scnt = 1
          .last_index = idx
          End With
        no_dup.Add i_data, crng.Value
        If Err.Number <> 0 Then
          With no_dup.Item(crng.Value)
           If .last_index <> idx Then
             .shtnm = .shtnm & "&" & shnm
             .scnt = .scnt + 1
             .last_index = idx
             End If
           End With
          End If
        Next
       End If
     End With
    Next
End Function

**********************************
クラスモジュールに(クラス名は class1)
'===========================================
Public infarray As Variant
Public shtnm As String
Public scnt As Long
Public last_index As Long


これでmainを実行してみて下さい。

新規ブックに
>
> 検証結果(新bookにて)
>> 列A    B:F   H
>>1NO(見出し)  
>>2DTQA654FR  情報行 (全sheetにある為sheet名は出さない)
>>3bbb     情報1  〃
>>4ccc     情報2  A&C
>>5bb      情報3  A&C
>>6cc      情報2  (B)
>

と言う結果が作成されます(順序は違いますが)


確認してみて下さい。

1 hits

【20151】改ページの数を数えたいのですが・・・ barbar 04/11/29(月) 19:40 質問
【20155】Re:改ページの数を数えたいのですが・・・ ちゃっぴ 04/11/29(月) 23:18 回答
【20187】Re:改ページの数を数えたいのですが・・・ barbar 04/11/30(火) 18:14 お礼
【33831】Re:改ページの数を数えたいのですが・・・ こんばんは 06/1/21(土) 19:11 発言
【33832】Re:改ページの数を数えたいのですが・・・ ichinose 06/1/21(土) 20:15 発言
【33836】Re:改ページの数を数えたいのですが・・・ こんばんは 06/1/21(土) 23:31 発言
【33841】Re:改ページの数を数えたいのですが・・・ ichinose 06/1/22(日) 7:04 発言
【33842】Re:改ページの数を数えたいのですが・・・ こんばんは 06/1/22(日) 9:31 発言
【33871】Re:改ページの数を数えたいのですが・・・ ichinose 06/1/23(月) 7:22 発言
【33921】Re:改ページの数を数えたいのですが・・・ こんばんは 06/1/23(月) 19:53 発言
【33940】Re:改ページの数を数えたいのですが・・・ ichinose 06/1/24(火) 8:05 発言
【33997】Re:改ページの数を数えたいのですが・・・ はじめまして 06/1/24(火) 19:10 発言
【34001】Re:改ページの数を数えたいのですが・・・ ichinose 06/1/24(火) 19:34 発言

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