2015-09-22 65 views
0

有沒有辦法來如何虛字轉換成駝峯

my-dashed-word 

轉換成

myDashedWord 
在Excel

+1

[任何企圖](http://whathaveyoutried.com)?請張貼任何你試圖解決的問題。 – Barranka

+0

你想刪除給定範圍內的每一個出現? –

回答

4

試試這個小UDF()

Public Function DashFixer(inpt As String) As String 
    If inpt = "" Then 
     DashFixer = "" 
     Exit Function 
    End If 

    ary = Split(inpt, "-") 
    For i = LBound(ary) + 1 To UBound(ary) 
     ary(i) = Application.WorksheetFunction.Proper(ary(i)) 
    Next i 
    DashFixer = Join(ary, "") 
End Function 

enter image description here

+0

我喜歡斯普利特。 – brettdj

1

我想只有VBA將是你實際的,但有一個公式,整個複製:

=SUBSTITUTE(A1,MID(A1,FIND("-",A1),2),UPPER(MID(A1,FIND("-",A1)+1,1))) 
+0

謝謝 - 這些是我在公式中的罕見嘗試(我總是跳到代碼),你的回答激勵我 –

+1

@paul我非常喜歡公式的一個原因是,在一個網站上投入(據說)對程序員來說VBA就像諺語給小孩的錘子 - 一切都像釘子一樣! – pnuts

3

其他版本:

Public Function dCam(ByRef cel As String) As String 

    dCam = Replace(StrConv(Replace(cel, "-", " "), vbProperCase), " ", "") 'MyDashedWord 

    dCam = LCase(Left(dCam, 1)) & Right(dCam, Len(dCam) - 1)    'myDashedWord 

End Function 

=SUBSTITUTE(PROPER(A1),"-","") 'MyDashedWord 

=LEFT(A1) & RIGHT(SUBSTITUTE(PROPER(A1),"-",""),LEN(SUBSTITUTE(A1,"-",""))-1) 'myDashedWord 
+0

我不那麼熱衷於那些開始「M」的人,但你最後的公式只比我的長10%,並且不需要像我一樣拖過去,所以IMO遠遠好起來。 +1。 – pnuts

1

還有一個版本。

Dashed Word Extraction

在B2的公式爲,

=LEFT(A2, FIND("-", A2&"- ")-1)&SUBSTITUTE(PROPER(MID(A2, FIND("-", A2&"- ")+1, 255)), "-", "") 
1

遠不有效,因爲我也喜歡,因爲沒有一種方法來以單觸發替換沿着

.Pattern = "\-([a-z)([a-z]+)" 
Set objRegexMC = .Replace(strIn, UCase("$1") & "$2") 

但正如我在那裏去了RegExp這裏。

Function StrCon1(strIn As String) As String 
Dim objRegex As Object 
Dim objRegexMC As Object 
Dim objRegexM As Object 

Set objRegex = CreateObject("vbscript.regexp") 
With objRegex 
    .Global = True 
    .Pattern = "\-([a-z])([a-z]+)" 
Set objRegexMC = .Execute(strIn) 
For Each objRegexM In objRegexMC 
    strIn = Replace(strIn, objRegexM,UCase$(objRegexM.submatches(0)) & objRegexM.submatches(1)) 
Next 
End With 

StrCon1 = strIn 
End Function