エクセル vbaについて質問です。
初めまして、今研修でシステムを作っているのですが困っております。ご教授頂けたらと思います。
内容は以下です。
- csvファイルが用意してある。
csv中身「〇〇、タイプ(1.2.3)、△△、パターン種類(文字列)、◇◇、」
※パターン種類とタイプは紐づいてます。 パターンAだとタイプ1、Cだと3となっております。
-
csvファイルを一行ずつエクセルで読み込む(タイプとパターン種類のみ)
-
パターン種類の列を主に重複データを検索、削除、削除した件数を種類ごとに合計して出力(そのパターンがタイプ2ならタイプ2の列に合計を出力)
-
読み込む際、別シートに元々登録してあるパターンと比較し、一致したら別シートパターンの右隣のセルのパターン説明文を代わりに読み込む。
4.読み込んだ行をNo1 2 3 4 5と最大行まで順番に番号を付けていく。
###該当のソースコード
Sub 練習1()
Dim buf As String
Dim tmp As Variant
Dim n As Long
Dim num As Long
Dim row_end As Long
Dim msg As String
Dim i As Long
Dim iti As Long
Dim ni As Long
Dim san As Long
Dim mix As String
Dim FoundCell As Range
Dim i As Long, cnt As Long
Open "csv置き場所" For Input As #1 n = 8 num = 0 iti = 0 ni = 0 san = 0 Line Input #1, buf Do Until EOF(1) Line Input #1, buf tmp = Split(buf, ",") n = n + 1 mix = tmp(1) Worksheets("IDSテスト").Select Cells(n, 2).Value = tmp(6) If mix = "1" Then iti = iti + 1 Worksheets("IDSテスト").Select Cells(n, 3).Value = iti ElseIf mix = "2" Then ni = ni + 1 Worksheets("IDSテスト").Select Cells(n, 4).Value = ni Else san = san + 1 Worksheets("IDSテスト").Select Cells(n, 5).Value = san End If num = num + 1 Cells(n, 1).Value = num Worksheets("IDSテスト").Range("A9:B2000").RemoveDuplicates Columns:=2, Header:=xlYes '重複行削除 Range(Range("B9"), Cells.SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp '空白行削除 Loop Close #1
End Sub
###試したこと
csvファイルを一行ずつ読み込むこと
重複行の削除
空白行の削除までは行いました。
後は、重複行の削除数含め件数を出力
csv読み込みの際の別シートと比較し、一致したら関連セル内容を代わりに出力です。
以上、わかりにくくて申し訳ありませんがよろしくお願いいたします。
※入出力の例として画像を添付いたします。
※入力例のcsvは
販売日,タイプ,パターン,屋さん
2016-05-23,A,みかん,八百屋
2016-05-22,B,ぶどう,八百屋
2016-05-22,C,りんご,八百屋
取り込む列は「タイプ」と「パターン」です。
回答1件
あなたの回答
tips
プレビュー