Board logo

標題: 字串問題 [打印本頁]

作者: ONT    時間: 2014-6-4 22:57     標題: 字串問題

請問各位有甚麼方法張字串 123456789 倒轉變成 987654321 。
我只係識以下方法,還有沒有其他方法將以下公式省略一點呢??
CONCATENATE(MID(儲存格,9,1),MID(儲存格,8,1),MID(儲存格,7,1),MID(儲存格,6,1),MID(儲存格,5,1),MID(儲存格,4,1),MID(儲存格,3,1),MID(儲存格,2,1),MID(儲存格,1,1))
作者: Hsieh    時間: 2014-6-5 09:40

本帖最後由 Hsieh 於 2014-6-5 09:48 編輯

回復 1# ONT

純數字可用
=SUMPRODUCT(--MID(A1,LEN(A1)-ROW(INDIRECT("A1:A"&LEN(A1)))+1,1),10^(LEN(A1)-ROW(INDIRECT("A1:A"&LEN(A1)))))
若包含非數字字串則必須使用VBA自定義函數
  1. Function TranStr(mystr As Variant) As String
  2. Dim i%
  3. For i = Len(mystr) To 1 Step -1
  4.   TranStr = IIf(TranStr = "", Mid(mystr, i, 1), TranStr & Mid(mystr, i, 1))
  5. Next
  6. End Function
複製代碼
[attach]18435[/attach]
作者: owen06    時間: 2014-6-5 10:11

本帖最後由 owen06 於 2014-6-5 10:13 編輯

回復 1# ONT

在VBA裡面新增一個模組,然後貼上下列內容
  1. Public Function STRE(InString As String)
  2. STRE = StrReverse(InString)
  3. End Function
複製代碼
回到工作表,在你要反轉的那格輸入=STRE(目標儲存格代號)
就可以了,但僅限於有此模組的excel檔,
Function就等於是你用vba自己寫一個excel函數的意思
作者: sunnyso    時間: 2014-6-5 10:41

本帖最後由 sunnyso 於 2014-6-5 10:43 編輯

Sub ReverseText()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "SonnyToolforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
xValue = Rng.Value
xLen = VBA.Len(xValue)
xOut = ""
For i = 1 To xLen
getChar = VBA.Right(xValue, 1)
xValue = VBA.Left(xValue, xLen - i)
xOut = xOut & getChar
Next
Rng.Value = xOut
Next
End Sub
作者: ML089    時間: 2014-6-5 16:31

公式只能處理純數字文字,而且最多只能15位數(EXCEL有效數字限制)

下列公式可以考慮前後有0數字的情況
=RIGHT(REPT(0,15)&SUMPRODUCT(MID(A1&REPT(0,15),ROW($1:$15),1)*10^(ROW($1:$15)-1)),LEN(A1))




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)