2017-08-07 14 views
0

VBScriptを使用してZ-Aでテキストファイル(CSVファイル)をソートしようとしています。 私のテキストファイルは次のようになります。アルファベット順に並べ替え

 
ZYUIP, ALGORITHM,TESTING,\ ,TABLE1 

私はZ-AからCSVファイルを注文したかったが、私は、CSVを配列にファイルを置くためにブロックされています。

これはZ-Aによってアレイを注文するためのコードである:

ArrayOfTerms = Array("B","A","C","D") 

For a = UBound(ArrayOfTerms) - 1 To 0 Step -1 
    For j= 0 To a 
     If ArrayOfTerms(j)<ArrayOfTerms(j+1) Then 
      temp = ArrayOfTerms(j+1) 
      ArrayOfTerms(j+1) = ArrayOfTerms(j) 
      ArrayOfTerms(j) = temp 
     End If 
    Next 
Next 
+0

csvファイルには箇条書きの点がありますか?それはそれにplussesを持つことになっているとSOはちょうどそれを間違ってフォーマットですか? – JNevill

+0

私のCSVには弾丸ポイントがありません。私の質問を修正します –

+0

各行のフィールドをアルファベット順にソートしますか?または、アルファベット順にCSVの行を並べ替えるのですか?後者の場合:どの列で? –

答えて

0

.Net Frameworkをダウンロードできない場合。これはCSVファイルをZからAにソートする私のソリューション(最適化ではない)です。

'--------------------------------------- 
' Load a CSV File into a VBScript Array 
'---------------------------------------- 
Function CSVArray(CSVFile) 

    comma = "," 
    quote = Chr(34) 

    colMax = -1 

    rowCount  = -1 
    Set inCsvSys = CreateObject("Scripting.FileSystemObject") 
    Set inCsv = inCsvSys.OpenTextFile(CSVFile,"1",True) 
    Do While Not inCsv.AtEndOfStream 
    rowCount = rowCount + 1 
    Redim Preserve inRow(rowCount) 
    inRow(rowCount) = inCsv.ReadLine 
    Loop 
    inCsv.Close 

    For r = 0 to rowCount 

    csvRecord = inRow(r) 
    colNum = -1 
    charPos = 0 
    cellComplete = True 

    Do While charPos < Len(csvRecord) 

     If (cellComplete = True) Then 
     colNum  = colNum + 1 
     cellPos  = 0 
     cellQuoted = False 
     cellComplete = False 
     If colNum > colMax Then 
      colMax = colNum 
      Redim Preserve cellArray(rowCount,colMax) 
     End If    
     End If 

     charPos = charPos + 1 
     cellPos = cellPos + 1 
     charVal = Mid(csvRecord, charPos, 1) 
     If (charVal = quote) Then 
     If (cellPos = 1) Then 
      cellQuoted = True 
      charVal = "" 
     Else 
      Select Case Mid(csvRecord, charPos+1, 1) 
      Case quote 
      charPos = charPos + 1 
      Case comma 
      charPos = charPos + 1 
      cellComplete = True 
      End Select 
     End If 
     ElseIf (charVal = comma) And (cellQuoted = False) Then 
     cellComplete = True 
     End If 
     If (cellComplete = False) Then 
     cellArray(r,colNum) = cellArray(r,colNum)&charVal 
     End If 

    Loop 

    Next 
    CSVArray = cellArray 
End Function 



csv = CSVArray("\\Ad.ing.net\wps\BE\D\UD\002001\D-JS15GY\Desktop\migrate_RA\externalfiles.csv") 

Set fso = WScript.CreateObject("Scripting.Filesystemobject") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile=objFSO.CreateTextFile("\\Ad.ing.net\wps\BE\D\UD\002001\D-JS15GY\Desktop\migrate_RA\externalfiles2.csv",2,true) 

'------------------------------ 
'Order the CSV File from Z to A 
'------------------------------ 

For a = UBound(csv,1) - 1 To 0 Step -1 
    for j= 0 to a 
    if csv(j,0)<csv(j+1,0) then 
    temp=csv(j+1,0) 
    csv(j+1,0)=csv(j,0) 
     csv(j,0)=temp 

    End If 
Next 

Next 

For j = 0 to Ubound(csv,1) 

    objFile.WriteLine csv(j,0) 

Next 
0

あなたは、.NET FrameworkからArrayList.Sortを使用することができます。項目は1つずつ入力する必要があります。

Dim ArrayList : Set ArrayList = CreateObject("System.Collections.ArrayList") 

'Add your items here: 
ArrayList.Add "B" : ArrayList.Add "A" : ArrayList.Add "C" : ArrayList.Add "D" 

ArrayList.Sort 
ArrayList.Reverse 
関連する問題