Sub SplitConc()
Dim lRow As Long
Dim nString As String
Dim rString As String
lRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For Each cel In Sheet1.Range("A2:A" & lRow)
nString = Replace(cel.Text, ".", "")
If Len(nString) > 0 Then
rString = Application.WorksheetFunction.Rept("0", 7 - Len(nString))
nString = "0" & nString & rString
cel.Offset(0, 1).NumberFormat = "@"
cel.Offset(0, 1) = nString
Else
End If
Next cel
lRow = Sheet1.Range("E" & Rows.Count).End(xlUp).Row
For Each cel In Sheet1.Range("E2:E" & lRow)
nString = Replace(Round(cel.Value, 2), ".", "")
If nString <> 0 Then
rString = Application.WorksheetFunction.Rept("0", 8 - Len(nString))
nString = nString & rString
cel.Offset(0, 1).NumberFormat = "@"
cel.Offset(0, 1) = nString
Else
End If
Next cel
End Sub
Sub test()
Dim e
For Each e In Array("a", "d")
With Range(e & "2", Range(e & Rows.Count).End(xlUp))
.Offset(, 1).Value = Evaluate("if(" & .Address & "<>"""",if(" & _
.Address & "<1000,""'"","""")&text(" & _
.Address & "*10000,rept(""0"",8)),"""")")
End With
Next
End Sub
Try
Code:Sub test() Dim e For Each e In Array("a", "d") With Range(e & "2", Range(e & Rows.Count).End(xlUp)) .Offset(, 1).Value = Evaluate("if(" & .Address & "<>"""",if(" & _ .Address & "<1000,""'"","""")&text(" & _ .Address & "*10000,rept(""0"",8)),"""")") End With Next End Sub
It can be easily done via Formula (added col C & G), see attached.
VBA code below. Not the most efficient, but will do what you are looking for.
Code:Sub SplitConc() Dim lRow As Long Dim nString As String Dim rString As String lRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row For Each cel In Sheet1.Range("A2:A" & lRow) nString = Replace(cel.Text, ".", "") If Len(nString) > 0 Then rString = Application.WorksheetFunction.Rept("0", 7 - Len(nString)) nString = "0" & nString & rString cel.Offset(0, 1).NumberFormat = "@" cel.Offset(0, 1) = nString Else End If Next cel lRow = Sheet1.Range("E" & Rows.Count).End(xlUp).Row For Each cel In Sheet1.Range("E2:E" & lRow) nString = Replace(Round(cel.Value, 2), ".", "") If nString <> 0 Then rString = Application.WorksheetFunction.Rept("0", 8 - Len(nString)) nString = nString & rString cel.Offset(0, 1).NumberFormat = "@" cel.Offset(0, 1) = nString Else End If Next cel End Sub
I assumed you wanted "ht code" rounded to 2nd decimal place based on your expected results.