csvを新ファイルに8番目で大きい順に並び替え
VB2010です。
前回、質問させて頂いた続きです。
前回は質問の仕方が失敗で大変皆様にご迷惑をおかけしました・・・・・
本当に申し訳なく思っています・・・
もうだんだん迷路に入ってしまったので、コードをそのまま記載しました。
Itm(7)を基準に数字の大きい順に並び替えしたいのです。
CSVは全部で19列あります。
ファイルによって違いますが、行数はだいたい100行ぐらいです
無理やりしたのコードを書いたのですが、あと一歩でやはりきれいに並び替えができません・・・
大変皆様にお手数ですがお助け下さい・・・・
プロの皆様にはかなり幼稚なコードで大変失礼します。
いろいろと試してみたのですが、これぐらいしか自分の力量では思いつかなくて・・・・
沢山失敗を繰り返したので変なコードも入っているかもですが・・・・・
Dim z As Integer = 0
Dim ReaderA As New IO.StreamReader(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & ".csv", System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim LineA As String = ReaderA.ReadLine
Dim Itm() As String
Dim s As Integer = 0
Do Until IsNothing(LineA)
Itm = LineA.Split(",")
If z = 0 Then
Dim Writer As New IO.StreamWriter(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv", False, System.Text.Encoding.GetEncoding("Shift-JIS"))
Writer.WriteLine(LineA)
Writer.Close()
Else
Dim ReaderB As New IO.StreamReader(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv", System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Writer As New IO.StreamWriter(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New2.csv", False, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim LineB As String = ReaderB.ReadLine
Dim Stm() As String
Dim u As Integer = 0
Do Until IsNothing(LineB)
Stm = LineB.Split(",")
If Integer.Parse(Itm(7)) > Integer.Parse(Stm(7)) Then
If u = 0 Then
Writer.WriteLine(LineA)
u += 1
End If
End If
Writer.WriteLine(LineB)
If Integer.Parse(Itm(7)) <= Integer.Parse(Stm(7)) Then
If u = 0 Then
Writer.WriteLine(LineA)
u += 1
End If
End If
s += 1
LineB = ReaderB.ReadLine
Loop
Writer.Close()
ReaderB.Close()
IO.File.Delete(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv")
Microsoft.VisualBasic.FileSystem.Rename(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New2.csv", SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv")
End If
z += 1
LineA = ReaderA.ReadLine
Loop
ReaderA.Close()
お礼
返信遅れて申し訳ありません。 最初は広報部門ですね。 パンフレットなどがあればかなりありがたいので、広報部門に連絡し、いただけないか交渉してみます。 回答ありがとうございました。