2014-02-20 77 views
1

這是我在這裏的第一個問題,所以我希望這是好的。我有一個Excel 2007電子與建立這樣的多行:在特定值之間填充單元格

000000111010011001100000000000000000 
000000000000001111101101000000000000 
000000000000000000000000001010000000 

所有行具有相同的長度(192個細胞)。在每一行,我需要填寫所有的第一個和最後之間發生的零「1」「1」來獲得:

000000111111111111100000000000000000 
000000000000001111111111000000000000 
000000000000000000000000001110000000 

我試圖在這裏尋找,但找不到一個類似的問題。希望這可以通過VBA(我是新手)來實現。

+3

歡迎堆棧溢出:)這是一種非常簡單的。嘗試這個。遍歷行並檢查'1'的第一個實例和最後一個實例,然後確定範圍。一旦完成,簡單地用'1'填充該範圍內的所有值。試一試,如果你被卡住了,發佈你試過的代碼,我們會從那裏拿走它? –

+0

什麼悉達思似乎是最可行的。爲了使循環更快,將範圍轉置爲數組並繼續使用。然後將處理後的陣列轉儲回範圍。您是否也可以顯示您的工作表的打印屏幕?所以其他人可能會更好地瞭解你所要求的內容。 – bonCodigo

回答

0

它簡單,你需要一些關於vba的讀物 - excel ..試着讓你的工作..這裏是代碼。我假設你有A列中的數據。

測試

Dim lrow As Integer 
Dim erange As Range 
Dim reslut As String 
Dim i As Integer 
Dim j As Integer 
Dim str As String 

Sub TESTING() 
With ActiveSheet 
lrow = .Range("A" & Rows.Count).End(xlUp).Row 
For Each erange In .Range("A1:A" & lrow) 
result = returnvalue1(erange.Text, StrReverse(erange.Value)) 
erange.Offset(0, 1).Value = Replace(result, "0", "1") 
Next erange 
End With 
End Sub 

Function returnvalue1(ByVal val1 As String, ByVal val2 As String) As String 
i = InStr(val1, 1) 
Debug.Print i 
j = InStr(val2, 1) - 1 
Debug.Print j 
j = Len(val1) - j 
Debug.Print j 
str = Mid(val1, i, (j - i) + 1) 
returnvalue1 = str 
End Function 
+0

感謝你們,我對VBA很陌生,在這裏掙扎。我的數據不是全部在列A中,而是在一個範圍內:(「A1:GC1272」)我需要如何更改上面的代碼才能反映這一點? – user3331695

+0

你是否想要在相同的範圍內進行更改? –