返回列表 上一主題 發帖

組合字串加入空白字元區隔

組合字串加入空白字元區隔

問題描述如圖示,敬請版友們指教,謝謝!

Fig_1.JPG (74.54 KB)

Fig_1.JPG

組合字串加入空白區隔.zip (4.36 KB)

回復 13# 准提部林

If Val(QBy) > 0 Then QBase = QBase

請問這句放在Function 和 放在 Sub中會有不同結果,爲什麽?
ss

TOP

  1. Function QQString(QBase, QMark$, QBy%) As String
  2. Dim TT$, xR
  3. If Val(QBy) > 0 Then QBase = QBase
  4. For Each xR In QBase
  5.   If xR <> "" Then TT = TT & QMark & xR
  6. Next
  7. QQString = Mid(TT, 2)
  8. End Function
複製代碼
 
公式:=QQString(A1:E5,"-",0)
   =QQString(A1:E5,"-",1)
 
QMark(連接符號).QBy=0(循列.由左而右>由上而下).QBy>0(循欄.由上而下>由左而右)

TOP


可製成增益集後引用
學海無涯_不恥下問

TOP

回復 3# zz5151353

太好了,你這簡短的VBA我看得懂。有一行好像可以不用。
  1. Function zz(i As Range) As String
  2.     For Each j In i
  3.         zz = Trim(zz & " " & j)
  4.     Next
  5.     'zz = Application.WorksheetFunction.Substitute(A, " ", " ")
  6. End Function
複製代碼
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

這個自訂函數可以自己設定串接符號; 假如串接的是多欄多列,還可以設定先欄後列(或是先列後欄)

回復  zz5151353
sunnyso 發表於 2013-6-4 00:29
ss

TOP

回復 3# zz5151353
的確僅能以VBA解決問題,非常感謝Mr. zz5151353提供簡潔明確的通則解法。
ps. 該VBA語法必須置於「模組」內方可發揮功能,不然將會出現4# Mr. aer所提之「出現 #NAME?」問題。

TOP

本帖最後由 c_c_lai 於 2013-6-4 06:28 編輯
版主,請問您是如何做的?為什麼我照您的方法打,可是都會出現 #NAME? 呢?謝謝
aer 發表於 2013-5-25 09:35

E2 (E2欄內之輸入內容):
  1. =CONCATENATE(A2, " ", B2, " ",C2, " ",D2)
複製代碼
或者是直接輸入:
  1. =A2 & " " & B2 & " " & C2 & " " & D2
複製代碼
兩者結果值是一樣的。
織田信長 李世民 曹操 王之渙

TOP

  1. Function CONTEXT(inprng As Range, Optional delimiter As String, Optional row1st As Boolean) As String
  2.     'delimiter Optional. String character used to separate the substrings in the returned string.
  3.     'If omitted, a zero-length string (""), all items in the list are concatenated with no delimiters.
  4.     'row1st Optional. Boolean from Row to Column. If omitted, from column to row
  5.     Dim RowN As Double
  6.     Dim ColN%, i%
  7.     Dim TmpAr() As Variant
  8.     RowN = IIf(inprng.Rows.Count < 16384, inprng.Rows.Count, 16384)
  9.     ColN = inprng.Columns.Count
  10.    
  11.     Select Case 0
  12.         Case RowN + ColN - 2
  13.             CONTEXT = inprng
  14.         Case RowN - 1
  15.             CONTEXT = Join(Application.Transpose(Application.Transpose(inprng)), delimiter)
  16.         Case ColN - 1
  17.             CONTEXT = Join(Application.Transpose(inprng), delimiter)
  18.         Case Else
  19.             If row1st = True Then
  20.                 ReDim TmpAr(1 To RowN)
  21.                 For i = 1 To RowN
  22.                     TmpAr(i) = Join(Application.Transpose(Application.Index(Application.Transpose(inprng), , i)), delimiter)
  23.                 Next i
  24.                 CONTEXT = Join(TmpAr, delimiter)
  25.             Else
  26.                 ReDim TmpAr(1 To ColN)
  27.                 For i = 1 To ColN
  28.                     TmpAr(i) = Join(Application.Transpose(Application.Index(inprng, , i)), delimiter)
  29.                 Next i
  30.                 CONTEXT = Join(TmpAr, delimiter)
  31.             End If
  32.     End Select
  33. End Function
複製代碼
回復 3# zz5151353
ss

TOP

利用FUNCTION自訂函數,以分隔符號連接文字串,可能較簡單便利,也較具彈性!

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題