2012-06-11 82 views
1

我知道TRIM功能的工作表函數和VBA函數返回不同的結果:等效VBA TRIM功能Excel中使用工作表函數

  • 工作表函數從一個文本字符串的所有空間,除了與單個空格單詞
  • 而VBA函數僅刪除前導和尾隨空格。

有沒有一種方法來模擬工作表函數的VBA行爲,而沒有自定義的VBA函數?

回答

5

只使用工作表函數,你可以試試這個文本字符串在A1中:

=REPLACE(LEFT(A1,MATCH(2,1/(MID(A1,MMULT(ROW(INDIRECT("1:"&LEN(A1))),1),1)<>" "))),1,FIND(LEFT(TRIM(A1)),A1)-1,"") 

查找不是空格的最後一個字符的位置不是str由於缺少字符串反向工作表函數而出現問題。

如果你不想使用VBA它更易於使用數據|分列與選項:

  1. 固定寬度
  2. 沒有斷裂線
  3. 目的地:B1

它也刪除前導和尾隨空格。

+0

+ 1簡單美麗:) –

+0

非常感謝! regs,stex – stexcec

+0

+1不錯哦!起初,我認爲MMULT是多餘的,但仔細檢查後,它不需要數組輸入。這是你的意圖嗎? –

1

工作表函數從一個文本字符串的所有空格,除了單詞之間的單個空格

沒有這並不完全正確:)工作表TRIM功能不會刪除不間斷空格字符(&nbsp;)。要刪除不間斷空格字符,你有不同的函數調用CLEAN()

如果要使用工作表函數Trim在VBA那麼你可以使用它像這樣

Application.WorksheetFunction.Trim(Range("A1").Value) 

在Excel工作表,您可以使用=TRIM()

+0

謝謝,但我需要的是一個工作表函數,只刪除前導和尾隨空格。任何想法? – stexcec

+0

我想我可能知道你指的是什麼。您是否有機會參考單元格有Alt + Enter創建空間的情況? –

+0

沒有Siddharth,我有這樣的字符串:「有一個或多個空格的字符串」。 TRIM(字符串)在excel單元格中的結果將是「帶有一個或多個空格的字符串」。 VBA TRIM函數將返回「帶有一個或多個空格的字符串」... – stexcec

0

您可以在VBA中編寫一個可在工作表中引用的函數。

例如:

Public Function MyTrim(text As String) As String  
    MyTrim = Trim(text)  
End Function 

然後在工作表中,假設你要修剪的文本在單元格A1:

=MyTrim(A1) 
+0

感謝皮特,但我正在尋找一個解決方案,而不使用自定義的VBA功能。 Regs – stexcec

+0

爲什麼這會降低投票率? 「我沒有自定義的VBA功能」被編輯到問題後,我發佈了這個答案... – PeteGO

+0

@PeteOakey - 我已經刪除我的downvote根據該澄清 – brettdj