Excel VBA質問箱 IV

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

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


12808 / 13644 ツリー ←次へ | 前へ→

【8512】他のEXCELファイルの、ある範囲をパターン化しその結果を新規EXCELファイル... テーブル 03/10/22(水) 12:04 質問
【8513】Re:他のEXCELファイルの、ある範囲をパター... INA 03/10/22(水) 13:18 回答
【8514】Re:他のEXCELファイルの、ある範囲をパター... テーブル 03/10/22(水) 13:50 質問
【8515】Re:他のEXCELファイルの、ある範囲をパター... テーブル 03/10/22(水) 14:06 質問
【8519】Re:他のEXCELファイルの、ある範囲をパター... INA 03/10/22(水) 15:37 回答
【8521】Re:他のEXCELファイルの、ある範囲をパタ... INA 03/10/22(水) 15:48 回答
【8525】Re:他のEXCELファイルの、ある範囲をパタ... テーブル 03/10/22(水) 16:33 お礼
【8528】Re:他のEXCELファイルの、ある範囲をパタ... INA 03/10/22(水) 16:50 回答
【8529】Re:他のEXCELファイルの、ある範囲をパタ... テーブル 03/10/22(水) 17:00 お礼

【8512】他のEXCELファイルの、ある範囲をパターン...
質問  テーブル E-MAIL  - 03/10/22(水) 12:04 -

引用なし
パスワード
   やりたい事は下記です。どうか知恵をお貸しください。
1.パターン化したい、情報が入ってる他のEXCELファイルは、1個〜5個存在します。
2・A〜Jの行データを、テーブル化(同じ内容のものでなければ追加、テーブル作成場所は、新規EXCELファイル)。最大5個の選択した、EXCELファイルに対して、テーブル化を行う。
3.どのようにテーブル化したいかというと、まずは、
  例1)  A   B   C   D   E   F   G   H   I  J  
      文字 文字  文字  
       ・  ・   ・  ・   ・  ・   ・   ・  ・  ・
       ・  ・   ・  ・   ・  ・   ・   ・  ・  ・
       ・  ・   ・  ・   ・  ・   ・   ・  ・  ・
      
  のように、何でも良いから文字が存在すれば、数字の「1」に変え,なければ「0」
               ↓
   A   B   C   D   E   F   G   H   I  J  
   1   1   1   0   0   0   0   0   0  0
っと、変化させます。 

   そして、変化したA〜Jのセルに対して、別の新しいEXCELファイルでテーブル化していきます(出力はA1) どのように、テーブル化していくかといいますと、例1)の、「1,1,1,0,0,0,0,0,0,0」が一番最初の、テーブルになるとします。そして、次に「1,0,0,0,0,0,0,0,0,0」だったとすると、最初のデータと比較すると同じ内容のものでないので、テーブルに追加していきます。
   っと言うように、最大5個からなるEXCELファイルのテーブル化ができたら、ソートして、一番数が多かったデータに対して、順番に「半角カナ」を「K列」に出力させていきます。
  
以上が、やりたい事なんですが、どうかお知恵をお貸しください。よろしくお願いします。

  

【8513】Re:他のEXCELファイルの、ある範囲をパタ...
回答  INA  - 03/10/22(水) 13:18 -

引用なし
パスワード
   どこが分からない部分になりますか?

「セルの新規ブックへのコピー」等の自動記録で出来る部分や
「文字変換」等は分かっていると思いますので、
分からない部分を明確にしていただけませんか?

【8514】Re:他のEXCELファイルの、ある範囲をパタ...
質問  テーブル E-MAIL  - 03/10/22(水) 13:50 -

引用なし
パスワード
   ▼INA さん:
いつもありがとうございます。
すいません。何がわからないか、書いてなかったですね^^;
分からない事が4つあります。

1.まず、下記の、文字が存在すれば1、しなければ0のように、入力されているセルがどこまでの列か判別し、変換する方法がわかりません。

2.そして、テーブル化する際に、新規ブックを立ち上げて、そこのA1に出力する際のプログラムが、どうすればいいかわかりません。

3.  1.のテーブル化する際に、最大5個のファイルが同じフォルダ内にあるので、1個目のファイルのテーブル化が10種類存在していたとしたら、2個目のファイルをテーブル化する際には、11種類目からスタートし、そこで4個発見したら、3個目のファイルを16種類目からスタートっと言うように、最大で5個のファイルを、同じテーブルに、違うパターンを発見するたびにデータを出力させて行きたいのです。 正直ここが、一番メインなので、一番教えて欲しい所です。

4.最後に、全てのファイルのパターン化が終了したら、カウントしてあったデータなので、最終的に同じパターン数が一番多かった順にソートをし、それで、半角カナを順番に振り分けて行きたいのですが・・・・・

  

【8515】Re:他のEXCELファイルの、ある範囲をパタ...
質問  テーブル E-MAIL  - 03/10/22(水) 14:06 -

引用なし
パスワード
   ▼テーブル さん:
>▼INA さん:
2は、自動記録でできましたね^^;

>いつもありがとうございます。
>すいません。何がわからないか、書いてなかったですね^^;
>分からない事が4つあります。
>
>1.まず、下記の、文字が存在すれば1、しなければ0のように、入力されているセルがどこまでの列か判別し、変換する方法がわかりません。
>
>2.そして、テーブル化する際に、新規ブックを立ち上げて、そこのA1に出力する際のプログラムが、どうすればいいかわかりません。
>
>3.  1.のテーブル化する際に、最大5個のファイルが同じフォルダ内にあるので、1個目のファイルのテーブル化が10種類存在していたとしたら、2個目のファイルをテーブル化する際には、11種類目からスタートし、そこで4個発見したら、3個目のファイルを16種類目からスタートっと言うように、最大で5個のファイルを、同じテーブルに、違うパターンを発見するたびにデータを出力させて行きたいのです。 正直ここが、一番メインなので、一番教えて欲しい所です。
>
>4.最後に、全てのファイルのパターン化が終了したら、カウントしてあったデータなので、最終的に同じパターン数が一番多かった順にソートをし、それで、半角カナを順番に振り分けて行きたいのですが・・・・・
>
>

【8519】Re:他のEXCELファイルの、ある範囲をパタ...
回答  INA  - 03/10/22(水) 15:37 -

引用なし
パスワード
   >1.まず、下記の、文字が存在すれば1、しなければ0のように、
>入力されているセルがどこまでの列か判別し、変換する方法がわかりません。
シートのレイアウトが分からないので、
UsedRangeで対応できるか分かりませんが・・・
(シート上のすべての値に対して実行します。)

Sub Sample()
Dim myRange As Range

  For Each myRange In ActiveSheet.UsedRange
    If myRange.Value <> "" Then
      myRange.Value = "1"
    Else
      myRange.Value = "0"
    End If
  Next myRange
End Sub

【8521】Re:他のEXCELファイルの、ある範囲をパタ...
回答  INA  - 03/10/22(水) 15:48 -

引用なし
パスワード
   >3.  1.のテーブル化する際に、最大5個のファイルが同じフォルダ内にあるので、
ファイルの指定はどのように行いますか?
ファイルを1個ずつ指定しながら処理する?
フォルダを指定し、その中の全EXCELファイルに対して実行する?
フォルダを指定し、その中の特定の名前のEXCELファイルに対して実行する?

>1個目のファイルのテーブル化が10種類存在していたとしたら、
>2個目のファイルをテーブル化する際には、11種類目からスタートし、
>そこで4個発見したら、3個目のファイルを16種類目からスタートっと言うように、
貼り付け先の最下行の取得は
Range("A65536").End(xlup).offset(1,0)
でできますので、これを抽出したデータの貼り付け先に指定して下さい。

Dim myNewBook As Workbook
  Set myNewBook = Workbooks.Add  
  ActiveSheet.UsedRange.Copy _
  Destination:=myNewBook.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0)

↑こんな感じ。


>最大で5個のファイルを、同じテーブルに、
>違うパターンを発見するたびにデータを出力させて行きたいのです。 
全部貼り付けた後に、不要な行を削除した方が良いのでは?

>4.最後に、全てのファイルのパターン化が終了したら、
>カウントしてあったデータなので、
>最終的に同じパターン数が一番多かった順にソートをし、
>それで、半角カナを順番に振り分けて行きたいのですが・・・・・
「カウントしてあったデータ」の意味が分からないです。
「同じパターン数が一番多かった順」同じデータは、不要なのでは?
ここは意味がわからんです。

【8525】Re:他のEXCELファイルの、ある範囲をパタ...
お礼  テーブル E-MAIL  - 03/10/22(水) 16:33 -

引用なし
パスワード
   ▼INA さん:
前の発言は、本当に助かりました^^ どうもありがとうございました。おかげで、0と1に分ける事ができました〜。

いつも本当に、ありがとうございます。ファイルの指定は、フォルダを指定し、その中の全EXCELファイルに対して実行する方法です。

>ファイルの指定はどのように行いますか?
>ファイルを1個ずつ指定しながら処理する?
>フォルダを指定し、その中の全EXCELファイルに対して実行する?
>フォルダを指定し、その中の特定の名前のEXCELファイルに対して実行する?


ありがとうございます。早速試してみます!! 

>貼り付け先の最下行の取得は
>Range("A65536").End(xlup).offset(1,0)
>でできますので、これを抽出したデータの貼り付け先に指定して下さい。
>
>Dim myNewBook As Workbook
>  Set myNewBook = Workbooks.Add  
>  ActiveSheet.UsedRange.Copy _
>  Destination:=myNewBook.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0)
>
>↑こんな感じ。


貼り付けた後に、不要な行を削除=同じ物を消して行くという事は思いつきませんでした。その方法の方がレスポンスがはやそうですね! 
>全部貼り付けた後に、不要な行を削除した方が良いのでは?


いつもわかりにくくてすいません・・・・ INAさんのおっしゃった通り、同じパターン数が一番多かった順です! 
>「カウントしてあったデータ」の意味が分からないです。
>「同じパターン数が一番多かった順」同じデータは、不要なのでは?
>ここは意味がわからんです。

【8528】Re:他のEXCELファイルの、ある範囲をパタ...
回答  INA  - 03/10/22(水) 16:50 -

引用なし
パスワード
   時間がないので、手持ちのをすこし編集しました。
参考になれば幸いです。

Sub sample()
Dim ファイル As String
Dim 一覧 As String
Dim Result As Long
Dim myObj As Object
Dim myDir As String

'Application.ScreenUpdating = False

Set myObj = CreateObject("Shell.Application"). _
BrowseForFolder(0, "フォルダを選択してください", 0)

If myObj Is Nothing Then Exit Sub
  myDir = myObj.Items.Item.Path & "\"
 

'##################################
' 同フォルダ内のExcelファイル検出
'##################################

  ファイル = Dir(myDir & "*.xls")
  
  Do While ファイル <> ""
    If ファイル = ThisWorkbook.Name Then ファイル = ""
    一覧 = 一覧 & Chr(13) & ファイル
    ファイル = Dir()
  Loop

 Result = MsgBox("以下のファイルが見つかりました。実行しますか?" & Chr(13) & 一覧, 4, "ファイル確認")
 If Result = 7 Then
  Exit Sub
 End If


'########################
'   データのコピー
'########################
ファイル = Dir(myDir & "*.xls")
 
 Do While ファイル <> ""
  If ファイル <> ThisWorkbook.Name Then
    'ファイルを開く
    Workbooks.Open Filename:=myDir & ファイル
   
    MsgBox ファイル & "を開いています。ここでコピー処理します。"
    
    'ファイルを閉じる
    ActiveWorkbook.Close False
  End If
  ファイル = Dir()
 Loop

'Application.ScreenUpdating = True

End Sub

【8529】Re:他のEXCELファイルの、ある範囲をパタ...
お礼  テーブル E-MAIL  - 03/10/22(水) 17:00 -

引用なし
パスワード
   ▼INA さん:
どうも回答ありがとうございます! 時間がないのに、私に時間を取っていただきありがとうございました! 

>時間がないので、手持ちのをすこし編集しました。
>参考になれば幸いです。

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