2015-02-09 39 views
0

我正在使用VBA。在我的編程'的for()循環是:如何獲得新列中由For循環生成的一列中的最終值?

 For i = 5 To 23 
      Status$ = GetScreen(4,i,3) 
      DateofDPS$=GetScreen(12,i,8) 
      TimeofStatus$=GetScreen(23,i,8) 
      TypeofDPS$=GetScreen(34,i,8) 
      Tech$=GetScreen(41,i,8) 
      techName$=GetScreen(50,i,30) 

      If Asc(GetScreen(43,i,6))<>32 Then 
       Write #OutputFile, DPSNo$, Status$,DateofDPS$,TimeofStatus$,TypeofDPS$,Tech$,techName$ 
      Else 
      End If 
     Next i 

存儲在#OutputFile結果是

Num | STAT | DAT   | TIM   | TYP | TEC | techName 
----+-----------+---------------+---------------+-------+-------+------------ 
477 | P  | 12/17/2014 | 17:20:34 | EX | 175 | UME 
477 | I  | 12/17/2014 | 17:40:47 | EX | 255 | VIN 
477 | O  | 12/17/2014 | 17:40:58 | EX | 255 | VIN 
804 | P  | 12/11/2014 | 11:01:39 | EX | 207 | KAU 
804 | I  | 12/11/2014 | 14:34:07 | EX | 253 | JOS 
804 | O  | 12/11/2014 | 14:34:26 | EX | 253 | JOS 
402 | P  | 11/13/2014 | 22:08:50 | EX | 243 | SHA 
402 | I  | 11/14/2014 | 05:04:04 | EX | 247 | LAK 
402 | O  | 11/14/2014 | 05:04:08 | EX | 247 | LAK 

我想補充另一列finalAction和結果應該是這樣的:

Num | STAT | DAT   | TIM   | TYP | TEC | techName | finaAction 
----+-----------+---------------+---------------+-------+-------+---------------+------------- 
477 | P  | 12/17/2014 | 17:20:34 | EX | 175 | UME   | VIN 
477 | I  | 12/17/2014 | 17:40:47 | EX | 255 | VIN   | VIN 
477 | O  | 12/17/2014 | 17:40:58 | EX | 255 | VIN   | VIN 
804 | P  | 12/11/2014 | 11:01:39 | EX | 207 | KAU   | JOS 
804 | I  | 12/11/2014 | 14:34:07 | EX | 253 | JOS   | JOS 
804 | O  | 12/11/2014 | 14:34:26 | EX | 253 | JOS   | JOS 
402 | P  | 11/13/2014 | 22:08:50 | EX | 243 | SHA   | LAK 
402 | I  | 11/14/2014 | 05:04:04 | EX | 247 | LAK   | LAK 
402 | O  | 11/14/2014 | 05:04:08 | EX | 247 | LAK   | LAK  

For()循環寫入平面文件。

我想在techName列中添加最終名稱並重復相同的操作。

這樣做的任何方式?

想到的

回答

0

第一種選擇:

創建一個變量來保存「LastDPONo」 然後查看當前記錄DPONo $和「LastDPONo」值之間的變化。

當你找到了你的最後一個記錄爲DPONo $,然後就可以識別分配給最後的更新上DPSNo $

的科技$你要麼需要之前識別出正確的科技$發生變化將行寫入輸出文件,或者一旦找到Tech $值,您將不得不修改輸出文件。

  1. 如果要識別技術$第一,你可以爲你尋找一個DPSNo $最後 連續行至$你需要找到技術每行一個數組或記錄寫入數據 。一旦 找到Tech $,您可以循環訪問數組或記錄集 創建並將數組中的每個實體的值或記錄集中的 記錄集的值寫入輸出文件中,最後添加Tech $。

  2. 要修改文本文件,你可以添加一個額外的列,然後適應這裏 方法概述: http://software-solutions-online.com/2014/03/15/vba-modify-existing-text-file/#Jump2

+0

謝謝@IAWeir。這是一個絕妙的主意我改變了我對於()循環,如下所示,它的工作: \t \t \t對於i = 5至23 \t \t \t \t狀態$ = GetScreen(4,我,3) \t \t \t \t DateofDPS $ = GetScreen(12中,i,8) \t \t \t \t TimeofStatus $ = GetScreen(23,I,8) \t \t \t \t TypeofDPS $ = GetScreen(34,I,8) \t \t \t \t技術$ = GetScreen(41,I,8) \t \t \t \t techName $ = GetScreen(50,I,30) \t \t \t \t如果升序(techName $)= 32然後 \t \t \t \t \t finalActionBy $ = GetScreen(41,I-1,8) \t \t \t \t否則 \t \t \t \t結束如果 \t \t \t \t如果升序(GetScreen(43,I 6))<> 32然後 \t \t \t \t \t寫#OutputFile,DPSNo $,狀態$,DateofDPS $,TimeofStatus $,TypeofDPS $,技術$,techName $, creaBy $,$ creaByName,finalActionBy $ \t \t \t \t否則 \t \t \t \t結束如果 \t \t \t下一頁我 – TheDProgrammer 2015-02-09 19:32:23

相關問題