Excel VBA質問箱 IV

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

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


25 / 13645 ツリー ←次へ | 前へ→

【82287】A-Z列は転記されるが、AB列以降の取得ができない VBA初学者です_T 24/5/20(月) 13:57 質問[未読]
【82288】Re:A-Z列は転記されるが、AB列以降の取得が... マナ 24/5/21(火) 13:49 発言[未読]
【82289】Re:A-Z列は転記されるが、AB列以降の取得が... VBA初学者です_T 24/5/21(火) 15:57 質問[未読]
【82290】Re:A-Z列は転記されるが、AB列以降の取得が... マナ 24/5/22(水) 13:58 発言[未読]
【82293】Re:A-Z列は転記されるが、AB列以降の取得が... VBA初学者です_T 24/5/23(木) 8:05 質問[未読]
【82294】Re:A-Z列は転記されるが、AB列以降の取得が... マナ 24/5/24(金) 12:49 発言[未読]
【82295】Re:A-Z列は転記されるが、AB列以降の取得が... VBA初学者です_T 24/5/24(金) 19:30 発言[未読]
【82296】Re:A-Z列は転記されるが、AB列以降の取得が... マナ 24/5/25(土) 12:54 発言[未読]
【82297】Re:A-Z列は転記されるが、AB列以降の取得が... VBA初学者です_T 24/5/25(土) 17:45 お礼[未読]

【82287】A-Z列は転記されるが、AB列以降の取得が...
質問  VBA初学者です_T  - 24/5/20(月) 13:57 -

引用なし
パスワード
   VBA初学者です。

CSVを読み込み、C列の中でフィルターをかけ、フィルターで抽出された行、且つ、指定の列を転記したいと思っています。
書籍を2冊読み、YouTubeなどで学び、chat GPTやcopilotなどで何とか、VBAを実行したいとトライしておりますが、うまくいきません。

c列の中でのフィルターは抽出できました。
抽出された横列がA-Zまでは抽出できていますが、AB列以降が抽出できない状況です。
列の抽出のコードの書き方が間違っているのでしょうか。

どなたかご教授ください。
宜しくお願い致します。


Sub C列でフィルター且つ列番号でデータ取得CSV()
  Dim ws As Worksheet
  Dim wsNew As Worksheet
  Dim csvFile As String
  Dim lastRow As Long
  Dim i As Long
  Dim newRow As Long
  Dim today As String
  Dim cValue As String
  Dim filterValues As Variant
  Dim columnsToCopy As Variant
  Dim colIndex As Long
  Dim copyColumn As Long
  
    ' フィルター対象の値を設定
  filterValues = Array("5", "11", "82", "402", "413", "421", "579", "580", "620")
  
    ' 転記する列を設定
  columnsToCopy = Array(1, 3, 4, 8, 21, 37, 56, 45, 48, 58, 62, 68, 70, 71, 73, 76, 84, 87, 20, 53)

  ' 今日の日付を取得してフォーマット
  today = Format(Date, "yyyymmdd")

  ' CSVファイルのパスを指定
  csvFile = Application.GetOpenFilename("CSVファイル (*.csv), *.csv")
  If csvFile = "False" Then Exit Sub ' ユーザーがキャンセルした場合

  ' 新しいワークシートを作成
  Set wsNew = ThisWorkbook.Sheets.Add
  wsNew.Name = "臨時進捗表_" & today

  ' CSVファイルを読み込むための一時的なワークシートを作成
  Set ws = ThisWorkbook.Sheets.Add
  ws.Name = "TempCSVData"

  ' CSVファイルを読み込み
  With ws.QueryTables.Add(Connection:="TEXT;" & csvFile, Destination:=ws.Range("A1"))
    .TextFileParseType = xlDelimited
    .TextFileCommaDelimiter = True
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) ' 必要に応じて列数を変更
    .Refresh BackgroundQuery:=False
  End With

  ' データの最終行を取得
  lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

  ' ヘッダーのコピー
  For i = LBound(columnsToCopy) To UBound(columnsToCopy)
    wsNew.Cells(1, i + 1).Value = ws.Cells(1, columnsToCopy(i)).Value
  Next i

  newRow = 2

  ' C列に指定された文字列が含まれる行を検索して指定の列を転記
  For i = 2 To lastRow ' ヘッダー行を飛ばして2行目から開始
    cValue = ws.Cells(i, 3).Value
    If Not IsError(Application.Match(cValue, filterValues, 0)) Then
      For colIndex = LBound(columnsToCopy) To UBound(columnsToCopy)
        copyColumn = columnsToCopy(colIndex)
        wsNew.Cells(newRow, colIndex + 1).Value = ws.Cells(i, copyColumn).Value
      Next colIndex
      newRow = newRow + 1
    End If
  Next i

  ' 一時的なワークシートを削除
  Application.DisplayAlerts = False
  ws.Delete
  Application.DisplayAlerts = True

  MsgBox "列番号でのデータ抽出が完了しました!", vbInformation
End Sub

【82288】Re:A-Z列は転記されるが、AB列以降の取得...
発言  マナ  - 24/5/21(火) 13:49 -

引用なし
パスワード
   ▼VBA初学者です_T さん:


>抽出された横列がA-Zまでは抽出できていますが、AB列以降が抽出できない状況です。


問題なのでは、どちらですか?
1)CSVデータのTempシートへの読み込み
2)Tempシートからの転記

ステップ実行で、どの行で想定外の挙動となるのか確認してください。

【82289】Re:A-Z列は転記されるが、AB列以降の取得...
質問  VBA初学者です_T  - 24/5/21(火) 15:57 -

引用なし
パスワード
   ▼マナ 様: 
>▼VBA初学者です_T さん:
>
>
>>抽出された横列がA-Zまでは抽出できていますが、AB列以降が抽出できない状況です。
>
>
>問題なのでは、どちらですか?
>1)CSVデータのTempシートへの読み込み
>2)Tempシートからの転記
>
>ステップ実行で、どの行で想定外の挙動となるのか確認してください。

マナ様
書き込みありがとうございます!
ステップインでの確認、初めて行いました。

一行ずつ、確認した結果、
>1)CSVデータのTempシートへの読み込み が問題でした。

どのような規則で並んだのか直ぐに理解できない状況ですが、
A列にほとんどの文字列が羅列されておりました。

なるほど!と思い、CSVファイルのデータをエクセルに落とし、
別のモジュールを記載して、ブック内でデータの読み込みと同条件の転記を実行したところ、
全ての列の情報が転記できました。

CSVの読み込み指示が誤っていると言う事でしょうか。

何度もお応え頂き恐縮ですが、ご教授お願い致します。

【82290】Re:A-Z列は転記されるが、AB列以降の取得...
発言  マナ  - 24/5/22(水) 13:58 -

引用なし
パスワード
   ▼VBA初学者です_T さん:

> CSVファイルのデータをエクセルに落とし、

これは、どのような操作ですか。

【82293】Re:A-Z列は転記されるが、AB列以降の取得...
質問  VBA初学者です_T  - 24/5/23(木) 8:05 -

引用なし
パスワード
   ▼マナ 様:
>▼VBA初学者です_T さん:
>
>> CSVファイルのデータをエクセルに落とし、
>
>これは、どのような操作ですか。

マナ様

Excelの操作で言うと、
データ → データの取得(Power Query) →テキスト/CSV シートに全データの読み込み

の操作です。
同ブック内のシート間で必要な行と列の転記をVBAで指示した所、転記ができましたので、
問題はVBAでのCSVの読み込み指示かと思いましたがいかがでしょうか。

【82294】Re:A-Z列は転記されるが、AB列以降の取得...
発言  マナ  - 24/5/24(金) 12:49 -

引用なし
パスワード
   ▼VBA初学者です_T さん:

そういうことであれば、マクロを使わずに、
抽出も含めPower Queryで実行ではだめですか。

【82295】Re:A-Z列は転記されるが、AB列以降の取得...
発言  VBA初学者です_T  - 24/5/24(金) 19:30 -

引用なし
パスワード
   ▼マナ 様:
>▼VBA初学者です_T さん:
>
>そういうことであれば、マクロを使わずに、
>抽出も含めPower Queryで実行ではだめですか。


マナ様

Power Query での実行も検討中です。
実務では毎日、csvファイル名(主に日付)が変わるので、読み込むファイル名が統一でなくても良いのか、(今のところは同じファイル名じゃないと運用できないのかなと、、)
毎回、同じファイル名にしないとPower Query更新されないか、毎日の運用でどちらがいいのか、検討しています。

今回のマクロ、Power Query共に毎日、データを取得して毎日エクセルデータを整理して活用している方々の運用にどちらを取り入れるべきか、作成と検討を行い、ご提案しようと考えています。

何度もレス頂きありがとうございます。

【82296】Re:A-Z列は転記されるが、AB列以降の取得...
発言  マナ  - 24/5/25(土) 12:54 -

引用なし
パスワード
   ▼VBA初学者です_T さん:

「フォルダから」で、データを取得すとよいです。

【82297】Re:A-Z列は転記されるが、AB列以降の取得...
お礼  VBA初学者です_T  - 24/5/25(土) 17:45 -

引用なし
パスワード
   ▼マナ 様:
>▼VBA初学者です_T さん:
>
>「フォルダから」で、データを取得すとよいです。


マナ様
ヒント、ありがとうございます!
「フォルダから」で取得してみます!

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