人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBA作成依頼

[1]auファイル(CSV。デスクトップ上にあるのみ)をエクセルで開くと
B D
2 16 ▲
3 28 ■
4 43 ★
・・100行程度続く

▲等記号は、大きいデータです。

[2]簡易シート(現在開いています)の内容は
C D E F G H
2
3 16
5 28 ◎
7 43 □ ▽
・・5万行くらい続く

[マクロ]
auのデータのD2の▲のデータを検索番号が一致する、簡易シートのE3に貼り付けたいのです。対応する行にはすでにデータが入っている時がありその際は右隣の空白に貼付ます⇒auファイルのD3の■のデータは簡易シートのG5に貼り付けたいです。D4のデータの★は簡易シートのH7に貼付ます。
auシートの行が終わるまで繰り返します。

auの検索番号(B列の番号)が、簡易シートにないときがあります。その際は、「20行失敗。」など表示されると嬉しいです。

よろしくお願いします。


●質問者: naranara19
●カテゴリ:コンピュータ 家電・AV機器
✍キーワード:28 AU CSV D2 D3
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●60ポイント ベストアンサー

仕様にわからないところがあったのでこれでいいか不安ですが作ってみました。

簡易シートのD列は一意なのか、重複してたら全てにいれるのかなど。

検索した行に記号が入っていないとき(16、▲の場合など)はE列に記号をいれるということならば、

簡易シートの方のモジュールに次のコードをコピペしてみてください。

Sub Macro()
 Dim wc As Worksheet
 Dim r As Long
 Dim r2 As Long
 Dim obj As Object
 Dim i As Long
 
 Application.ScreenUpdating = False

  'auファイルをau.csv、エクセルで開いたときのシートをauにしています 
 Set wc = Workbooks("au.csv").Worksheets("au")
 
 r = 2
 While wc.Cells(r, 2).Value <> ""
 Set obj = Range("D:D").Find(wc.Cells(r, 2).Value)
 If obj Is Nothing Then
 MsgBox r & "行失敗。"
 Else
 r2 = obj.Row
 For i = Columns.Count - 1 To 4 Step -1
 If Cells(r2, i).Value <> "" Then
 Cells(r2, i + 1).Value = wc.Cells(r, 4).Value
 Exit For
 End If
 Next i
 End If
 r = r + 1
 Wend
 
 Set obj = Nothing
 Set wc = Nothing
 
 Application.ScreenUpdating = True
End Sub

auファイルと簡易シートのあるブックをExcelで開いた状態でコードを実行してください。


注意、auファイルのB列の検索文字に空白が出るまで処理を繰り返すようになっています。

B列に途中空白があると途中で止まります。

◎質問者からの返答

文字制限で詳しくかけませんでした。依頼の文にもなっていなくてすみませんでした。

ご回答ありがとうございます。

早速やってみましたが、

ありがとうございます!Set WCでつまってしまいました。インデックスが有効範囲にありません。とエラーがでてしまいました。

一応auファイルを開いてやっているのですが・・。auファイルのシート名もauになります。


簡易シートのD列は一意なのか、重複してたら全てにいれるのかなど。

★簡易シートのD列の数字はすべて異なっております。auの方は重複しているケースがあります。

検索した行に記号が入っていないとき(16、▲の場合など)はE列に記号をいれるということならば、

★はい、その通りです。検索した行の該当するE列にデータが入っていないときがあります。

ただ、記号をいれるのではなく、記号はあくまでも説明しやすくするためにしているので、

本来は大きいデータになります。(HTMLの入ったデータ)

お手数をおかけしますが、よろしくお願いいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ