Is there any faster process to move the cell values in a group from right to left if any group of cells are blank using VBScript without using any Looping technique? (Packing the data of each row , to the left)
Input Table:*
Project# T1Name T1StartDate T1FinishDate T2Name T2StartDate T2FinishDate T3Name T3StartDate T3FinishDate
11 S1 12/7/2012 19/7/2012 S2 12/7/2012 19/7/2012
12 S2 12/6/2012
13 S4 11/05/12 S6 12/5/10
Output Table:
Project# T1Name T1StartDate T1FinishDate T2Name T2StartDate T2FinishDate T3Name T3StartDate T3FinishDate
11 S1 12/7/2012 19/7/2012 S2 12/7/2012 19/7/2012
12 S2 12/6/2012
13 S4 11/05/12 S6 12/05/10
Updated MY Output Table Please check,firstly it was got misplaced!
Update1
Project# T1Name T1StartDate T1FinishDate T2Name T2StartDate T2FinishDate T3Name T3StartDate T3FinishDate
10 S1 11/5/2011 S2 5/5/2011
11 S1 11/5/2011 5/4/2011 S1 11/5/2011 5/4/2011
Update2
Project# T1Name T1StartDate T1FinishDate T2Name T2StartDate T2FinishDate T3Name T3StartDate T3FinishDate
11 11/5/2011 S1 11/5/2011 5/4/2011 S2 11/5/2011 5/4/2011
Add this entry to the table it is not shifted properly. Can you check please?
Updated Code:
Option Explicit
Dim objExcel1,objWorkbook
Dim strPathExcel1
Dim objSheet1,IntRow1
Dim Task,Totltask
Dim DataArray(14),index,Counter
Set objExcel1 = CreateObject("Excel.Application")
strPathExcel1 = "D:\VA\TestVBSScripts\Test.xlsx"
Set objWorkbook=objExcel1.Workbooks.open(strPathExcel1)
Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets(1)
IntRow1=2
Do While objSheet1.Cells(IntRow1,1).Value <> ""
Totltask=2
index=0
Do Until Totltask> 10
'MsgBox("Hi")
If objSheet1.Cells(IntRow1,Totltask).Value <> "" Or objSheet1.Cells(IntRow1,Totltask+1).Value <> "" Or objSheet1.Cells(IntRow1,Totltask+2).Value <> "" Then
DataArray(index)=objSheet1.Cells(IntRow1,Totltask).Value
DataArray(index+1)=objSheet1.Cells(IntRow1,Totltask+1).Value
DataArray(index+2)=objSheet1.Cells(IntRow1,Totltask+2).Value
index=index+3
End If
Totltask=Totltask+3
Loop
Totltask=2
Counter=index-1
index=0
'MsgBox(Counter)
Do While index < Counter
'MsgBox("Hi")
objSheet1.Cells(IntRow1,Totltask).Value=DataArray(index)
objSheet1.Cells(IntRow1,Totltask+1).Value=DataArray(index+1)
objSheet1.Cells(IntRow1,Totltask+2).Value=DataArray(index+2)
Totltask=Totltask+3
index=index+3
Loop
Erase DataArray
Do Until Totltask >10
objSheet1.Cells(IntRow1,Totltask).Value=""
Totltask=Totltask+1
Loop
IntRow1=IntRow1+1
Loop
'=======================
objExcel1.ActiveWorkbook.SaveAs strPathExcel1
objExcel1.Workbooks.close
objExcel1.Application.Quit
'======================
***Can any body suggest how should i make it more faster,If possible? This code is correct,producing output as desired.But too slow.