回答編集履歴

4

修正

2019/03/20 05:02

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  cols2 = Join(cols, ",")
40
40
 
41
- dicFrom.Add key, cols2
41
+ dicB.Add key, cols2
42
42
 
43
43
  Loop
44
44
 

3

修正

2019/03/20 05:02

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -52,21 +52,21 @@
52
52
 
53
53
  Set oFC = oFSO.OpenTextFile("fileC.csv")
54
54
 
55
- Do While oA.AtEndOfStream <> True
55
+ Do While oFA.AtEndOfStream <> True
56
56
 
57
- line = oA.ReadLine
57
+ line = oFA.ReadLine
58
58
 
59
59
  cols = Split(line, ",")
60
60
 
61
61
  outline = line & "," & dicB.Item(cols(5))
62
62
 
63
- WScript.Echo outline
63
+ oFC.WriteLine outline
64
64
 
65
65
  Loop
66
66
 
67
- oA.Close
67
+ oFA.Close
68
68
 
69
- oC.Close
69
+ oFC.Close
70
70
 
71
71
 
72
72
 

2

修正

2019/03/20 05:01

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  line = oFB.ReadLine
26
26
 
27
- cols = CommonSplit(line, " ", " ")
27
+ cols = Split(line, ",")
28
28
 
29
29
  key = cols(0)
30
30
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  line = oA.ReadLine
58
58
 
59
- cols = split(line)
59
+ cols = Split(line, ",")
60
60
 
61
61
  outline = line & "," & dicB.Item(cols(5))
62
62
 

1

ざっくりコード追記

2019/03/20 04:58

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -3,3 +3,71 @@
3
3
  あとはファイルAを読みながらFFFで連想配列を参照して、引っ張ってきたものと一緒にファイルAを出力すればよいですね。
4
4
 
5
5
  ただファイルBの中身を全部メモリに読み込むことになるので、メモリを圧迫するほどのデータ量だと実用的ではないです。
6
+
7
+
8
+
9
+ ざっくりですが、コードを書いてみました。
10
+
11
+ エラー処理等は省いています。
12
+
13
+ ```VBScript
14
+
15
+ ' ファイルBを連想配列化
16
+
17
+ Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
18
+
19
+ Set oFB = oFSO.OpenTextFile("fileB.csv")
20
+
21
+ Set dicB = CreateObject("Scripting.Dictionary")
22
+
23
+ Do While oFB.AtEndOfStream <> True
24
+
25
+ line = oFB.ReadLine
26
+
27
+ cols = CommonSplit(line, " ", " ")
28
+
29
+ key = cols(0)
30
+
31
+ For i = 0 to Ubound(cols) - 2
32
+
33
+ cols(i) = cols(i+1)
34
+
35
+ Next
36
+
37
+ ReDim Preserve cols(Ubound(cols)-2)
38
+
39
+ cols2 = Join(cols, ",")
40
+
41
+ dicFrom.Add key, cols2
42
+
43
+ Loop
44
+
45
+ oFB.Close
46
+
47
+
48
+
49
+ ' ファイルAを読んでファイルCに出力
50
+
51
+ Set oFA = oFSO.OpenTextFile("fileA.csv")
52
+
53
+ Set oFC = oFSO.OpenTextFile("fileC.csv")
54
+
55
+ Do While oA.AtEndOfStream <> True
56
+
57
+ line = oA.ReadLine
58
+
59
+ cols = split(line)
60
+
61
+ outline = line & "," & dicB.Item(cols(5))
62
+
63
+ WScript.Echo outline
64
+
65
+ Loop
66
+
67
+ oA.Close
68
+
69
+ oC.Close
70
+
71
+
72
+
73
+ ```