iT邦幫忙

0

請問如何用 Excel 在 投石ㄨㄣˋ路 成語中,在注音的前後用「」包起來?

請問如何用 Excel 在 投石ㄨㄣˋ路 成語中,在注音的前後用「」包起來?
假設我有1000筆資料,請問可以怎麼做呢?
.投石ㄨㄣˋ路
.志同道ㄏㄜˊ
.....
...
想變成
.投石「ㄨㄣˋ」路
.志同道「ㄏㄜˊ」

heyday iT邦新手 5 級 ‧ 2014-04-03 14:19:39 檢舉
注音符號 與 Unicode 對照表

ㄅㄆㄇ ~ ㄧㄨㄩ:\u3105-\u3129
二聲(ˊ):\u02CA
三聲(ˇ):\u02C7
四聲(ˊ):\u02CB
輕聲(˙):\u02D9

2 個回答

2
tanpen
iT邦研究生 3 級 ‧ 2014-04-03 13:24:52

CONCATENATE可以組合字串,
但重點是不知道你在那一個字元開始是注音,少數還能用left ,right 等去取字元,多了就累了.幾仟筆..和自己插入不是一樣嗎
如果它分三個欄位,組合起來就快了..,
A B C
投石 ㄨㄣˋ 路
志同道 ㄏㄜˊ
ーㄡˇ 志一同
CONCATENATE(A1,"「",B1,"」",C1)
空白沒差,但是要框選的字要在同一個地方

ilanspeed iT邦新手 5 級 ‧ 2014-04-03 14:17:31 檢舉

謝謝,可是這1000筆都是出現在亂數的位置耶
有時第1個字,有時第4個…
那這樣好像就不行了,謝謝你的回應~

16
海綿寶寶
iT邦超人 1 級 ‧ 2014-04-03 16:55:50

我只會用 VBA 做
假設 A1..A10 是原始字串
B1..B10 是結果字串
那麼程式如下

<pre class="c" name="code">
Option Explicit
Const nRowStart = 1     '開始列
Const nRowEnd = 10      '結束列
Const sColSource = "A"  '原始行
Const sColDest = "B"    '結果行
Sub Main()
    Dim nRow, nIdx, sChar, sDestString
    Dim bIsPhonetic As Boolean
    
    For nRow = nRowStart To nRowEnd
        bIsPhonetic = False '現在是否是注音符號
        sDestString = ""
        
        For nIdx = 1 To Len(Range(sColSource & nRow).Value)
            sChar = Mid(Range(sColSource & nRow).Value, nIdx, 1)
            If isPhonetic(sChar) Then   '檢查是否是注音符號
                If bIsPhonetic = False Then
                    bIsPhonetic = True
                    sDestString = sDestString & "「" & sChar     '注音符號開始
                Else
                    sDestString = sDestString & sChar     '注音符號
                End If
            Else
                If bIsPhonetic = True Then
                    bIsPhonetic = False
                    sDestString = sDestString & "」" & sChar     '注音符號結束
                Else
                    sDestString = sDestString & sChar   '一般文字
                End If
            End If
        Next
        If bIsPhonetic = True Then
            sDestString = sDestString & "」"
        End If
        
        '存到結果行
        Range(sColDest & nRow).Value = sDestString
    Next
End Sub
Function isPhonetic(ByVal pChar) As String  '判斷是否為注音符號
    If InStr("ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄧㄨㄩㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦˊˇˋ˙", pChar) > 0 Then
        isPhonetic = True
    Else
        isPhonetic = False
    End If
End Function

我要發表回答

立即登入回答