Używam więc API z niektórymi VBA w Excelu, a wynik, który otrzymuję z programu, umieszcza podwójną spację w środku liczb jak 123456 7891011. Moje obecne rozwiązanie jest takie,
With ws.Range("J2:J98")
.Formula = "=LEFT(I2,6)"
End With
With ws.Range("K2:K98")
.Formula = "=RIGHT(I2,7)"
End With
With ws.Range("L2:L98")
.Formula = "=CONCATENATE(J2,K2)"
.Value = .Value
.NumberFormat = "0"
End With
Z ukrytymi J i K.
Moje pytanie brzmi: czy istnieje sposób, aby to zrobić bez używania komórek do przechowywania formuł?
Oto kod, którego używam do wyciągania tego, co chcę zmodyfikować
ActiveSheet.Cells(k, 9) = Trim(autECLSession.autECLPS.GetText(4, 24, 15))
a rozwiązaniem jest
With ws.Range("L2:L98")
.Formula = "=Substitute(I2,"" "", """")"
.Value = .Value
.NumberFormat = "0"
End With
Poprawka do mojego pytania brzmi: czy potrzebuję nawet wyjścia, aby uderzyć w komórkę, czy też mogę uruchomić substytut, zanim to zrobi?
Odpowiedzi:
0 dla odpowiedzi № 1Jedną z rzeczy, którą możesz zrobić, to użyć zamiennika zamiast brać lewy i prawy i łącząc je:
=SUBSTITUTE(I2;" ";"")
Zmniejszy to liczbę potrzebnych ukrytych kolumn.
Nie jestem pewien, co dokładnie próbujesz zrobić, alemożna zastąpić oryginalną zawartość pętlą nad wybranym / docelowym obszarem. Wtedy nie będą potrzebne żadne formuły, a oryginalny zakres zostanie zastąpiony nowymi wartościami.
0 dla odpowiedzi nr 2
Activecell = Range("J2")
for x=1 to 97
if instr(1, activecell, " ") > 0 then " test do see if a double space is present in the activecell
activecell = replace(activecell, " ", "") " if so, remove it
else
end if
next x