/ / Usuwanie podwójnych spacji w środku wyjścia - excel, vba, excel-vba

Usuwanie podwójnych spacji w środku wyjścia - excel, vba, excel-vba

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 № 1

Jedną 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