Txtファイルにあるデータがコンマで区切られています。並びをAからJとします。Aの前には日付が入っています。
ExcelのUserFormを使い、テキスト(拡張子Txt)のデータを列ごと取得しようと思っております。たとえば図のようにBのチェックボックスにチェックを入れ、ExecuteButton1を押すと「-509999.9987」データと日付のみ、新しいExcelファイルにデータを入れるという方法です。
並びとしましてUserForm1の中にPage1がありその中にFrame1が入って、Checkboxがあります。
どなたか簡単にできる方法を教えていただけますでしょうか。どうぞよろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
質問者さんの例文を見ると
For i = 1 To 200
となっていますよね?
これを列の移動で考えると左から右へ処理するという意味になります.
もし回答No2の様な処理を行うとチェックの入っていない列は削除して左に詰めるという事を実行しているので,おそらく列のズレが出てくると思います.
そこで
For i = 200 To 1 Step -1
とすれば右側の列から左に向かって処理するという事になるのですが,そうすれば仮に列を削除して左に詰めたとしても列のズレは出てきません.
見当違いな回答でしたら申し訳ないのですが,どの様な問題が出ていてNGなのかを記述して貰えると助かります.
No.2
- 回答日時:
補足を読みました.
IFとFor~Nextを利用して例文を考えると,(チェックボックスが3つと仮定)
Dim i As Integer '繰り返し演算の引数
Dim j As Integer 'Trueの個数を数える引数
For i = 3 To 1 Step -1 'ここで3がチェックボックスの数
If Me.Controls("CheckBox" & i) = False Then 'チェックが入っていない場合
Worksheets("Sheet1").Range(Cells(1, i), Cells(1048576, i)).Select
Selection.Delete Shift:=xlToLeft
Else 'チェックが入っている場合
j = j + 1
End If
Next i
上記内容でできる事はチェックボックスにチェックを入れていない列を削除し,左側に詰めるという事とチェックボックスにチェックが入っている個数を数える事ができます.
前回の回答での過程は1行毎にチェックを確認する方法で考えていたのですが,その方法だと下手に時間が掛かるので,上記の方法に修正しました.
この内容で②~④までができる様になっていると思います.
ありがとうございます。 テストしましたが、NGでした。
たとえばチックボックス1と4にチェックが入っていたとします。コンマの間と間のデータを取得しようとすると、1列目のデータは日付なので、2列目と5列目を取得したいと思いますがうまくいきません。
チェックボックスの1番目にレ点があると下記のようになります。
If Me.Controls("CheckBox1").Value = True Then
If Me.Controls("CheckBox2").Value = True Then
If Me.Controls("CheckBox3").Value = True Then
して行くと、200以上のチェックボックスがある場合それを200以上作らないといけません。
また、下記のようにすると。
.......................
For i = 1 To 200
If Me.Controls("CheckBox" & i).Value = True Then
~~~~~~~~~
else
~~~~~~~~~
next i
..........................
たとえば1と4列目が正(True)の場合であっても、テキストの中身のデータを的確に2列目と5列目を取得するのが難しいです。
すみません。他にいい案はございますでしょうか?
No.1
- 回答日時:
質問者さんの意向通りか分かりませんが,やりたい事はA列にあるテキストデータのカンマ区切りをデータ列に分けて,更にその中から抽出したいデータ列を選択するとその列のデータが残るという事で宜しいでしょうか?
また1つ確認ですが,このテキストデータというのは拡張子.txtのファイルをエクセルで読み込む場合,1つのテキストファイルなのでしょうか?それとも複数なのでしょうか?
1つならインポートで済む話ですし,複数なら別途マクロが必要になると考えています.
それでは回答についてですが,実際のマクロの記述ではなく,考え方で示したいと思います.
上記内容と重複するのですが,
①カンマ区切りのデータを一旦カンマごとに列で分ける(これはエクセルの標準機能でデータの区切り位置でできます.これのマクロは一旦マクロの記録をした状態でA列を選択し,区切りを行う事でマクロの内容を獲得できます.)
②ユーザーフォームのチェックボタンに各々引数を設定し,それがTRUEの場合に列のデータを残す,FALSEは列のデータを削除する(clearではなく,deleteを利用すると列が左に移動します)
③これをDo~Loopを利用し,例えば変数にiを用いて
i=i+1
で行の位置を出して繰り返し計算を行い,マクロを止める時は以下の方法でできると思います.
1.Range(i,1).value=0の時にExit Subでマクロを止める
2.の値が行の最終位置になった時にLoop Untilで繰り返し計算をやめる
④もしくはFor Nextを使って最終行の位置を予め出しているならその行まで繰り返す方法もあります.
最終行はCells(Rows.Count, 1).End(xlUp)で求められます.
⑤これに対して新規のブックにデータを入れるには
ActiveWorkBook(新規のブック)とThisWorkbook(データを抽出したブック)と
Copyを使えばできると思います.
⑥コピーの範囲はユーザーフォームでチェックした数(TRUEの数)を利用して必要な列数を求める
以上で如何でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(Microsoft Office) ExcelデータをPDFにして保存するとWordデータに変換されるようになった 10 2023/06/20 09:03
- Excel(エクセル) Excelに関して質問があります。 写真のようなことが起こりました。 解決方法が分かりません。 どな 2 2023/05/30 05:54
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) Excelの並び替え(先頭の文字以外を基準に並び替えたい) 3 2023/07/07 22:21
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
えABのある列って
-
VLOOKUPの列番号の最大は?
-
エクセルで?
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
エクセルで複数列の検索をマク...
-
「段」と「行」の違いがよくわ...
-
VBA
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
列方向、行方向の定義
-
エクセルのソートで、数字より...
-
VBAで別ブックの列を検索し、該...
-
エクセルで住所を県と市・郡と...
-
エクセルでセル12個間隔で合...
-
EXCELでデータの更新した後の列...
-
ListViewで列を指定して表示さ...
-
リストからデータを紐付けしたい
-
Alt+Shift+↑を一括で行うには、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
マクロについて教えてください。
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
<急募>エクセルデータの関数を...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
VBA 指定した列にある日時デー...
-
VBAで別ブックの列を検索し、該...
-
エクセルで住所を県と市・郡と...
-
エクセルマクロの組み方
-
エクセルマクロ 並び替え 手動...
-
エクセルで複数列の検索をマク...
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
エクセルマクロPrivate Subを複...
-
エクセル 重複 隣の列 一番...
-
エクセル マクロ 範囲指定で...
-
リストからデータを紐付けしたい
おすすめ情報
アクセスできるかわかりませんが
ここにファイルをUploadしてみました。
http://prt.nu/f3/test
http://36.gigafile.nu/0511-b9935a5d015d8b3598e1d …
パスワードは1234
Executeボタンを押したら、下記のような流れになればいいです。
テキストオープン>新規のExcelシートを作成する>選択したタグを列で取得する>新規のExcelシートに取得したデータを詰めて張り付ける(その時日付とデータを張り付ける)。
ご回答ありがとうございます。ちょっとまだ質問があります。
①複数のテキストファイルを持ちいります。
②~④どういったマクロをお考えでしょうか? 根本的にUserFormの使い方がわからないのでうまくExcelマクロと組み合わせることができないです。