ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

½Ð±Ðmid¡Bmidb¡Blen¡Blenb°ÝÃD

¦^´_ 1# lionliu

§Aªº½d¨Ò¤¤ A1 = "abc123, abc 123 abc123§Ú·d¤£©w MID( ),MIDB( )¡ALEN( ) LENB( ) stuwxyz"

LEN(A1) = 64
LENB(A1) = 69
ªí¥Ü 69-64=5 ¦³5­ÓÂù¦r¤¸

¤£¤F¸Ñ§A­n¨D¬Æ»ò?
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 3# lionliu

½Ð¬Ý³o½g»¡©ú
    http://forum.twbts.com/thread-31-1-1.html



Len ¨ç¼Æ½d¨Ò
²Ä¤@­Ó½d¨Ò¨Ï¥Î Len ¶Ç¦^¬Y¦r¦êªºªø«×(¦r¤¸¼Æ)©Î¬YÅܼƪº¤j¤p(¦ì¤¸¼Æ)¡CType...End Type µ{¦¡°Ï¶ô©w¸q¤@­Ó¦Û­q¸ê®Æ«¬ºA CustomerRecord¡C¦pªG¸Ó¸ê®Æ«¬ºA©w¸q¦bª«¥óÃþ§O¼Ò²Õ¤¤¡A«h¥²»Ý¥HÃöÁä¦r Private ¶}ÀY(ªí¥Ü¬°¨p¦³)¡C­Y©w¸q¦b¤@¯ë¼Ò²Õ¤¤¡AType ©w¸q´N¥i¥H¬° Public¡C

Type CustomerRecord    ' ©w¸q¨Ï¥ÎªÌ¦Û­qªº¸ê®Æ«¬ºA¡C
    ID As Integer    ' ±N¦¹©w¸q©ñ¦b¤@¯ë¼Ò²Õ¤¤¡C
    Name As String * 10
    Address As String * 30
End Type

Dim Customer As CustomerRecord    ' «Å§iÅܼơC
Dim MyInt As Integer, MyCur As Currency
Dim MyString, MyLen
MyString = "Hello World"    ' ³]©wÅܼƪì­È¡C
MyLen = Len(MyInt)    ' ¶Ç¦^ 2¡C
MyLen = Len(Customer)    ' ¶Ç¦^ 42¡C
MyLen = Len(MyString)    ' ¶Ç¦^ 11¡C
MyLen = Len(MyCur)    ' ¶Ç¦^ 8¡C

¦pªG¥ÎANSIªí¥Ü¦r¦êªº¸Ü¡A²Ä¤G­Ó½d¨Ò¨Ï¥Î LenB©M¨Ï¥ÎªÌ©w¸qªº¨ç¼Æ (LenMbcs) ¶Ç¦^¬Y¦r¦êªºªø«×(¦r¤¸¼Æ)¡C

Function LenMbcs (ByVal str as String)
    LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function

Dim MyString, MyLen
MyString = "ABc"
' "A" ©M "B" ¬O DBCS¥B "c" ¬OSBCS¡C
MyLen = Len(MyString)
' ¶Ç¦^¦r¦ê¤¤¦³3 ¡V3 ­Ó¦r¤¸¡C
MyLen = LenB(MyString)
' ¶Ç¦^ 6 ¡V 6 ¦ì¤¸¥Î©óUnicode¡C
MyLen = LenMbcs(MyString)
' ¶Ç¦^ 5 - 5­Ó¦ì¤¸¥Î©óANSI¡C
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¥[¤J
Function xMidB(ByVal str As String, start, length)
    xMidB = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)
End Function

Function xLenB(ByVal str As String)
    xLenB = LenB(StrConv(str, vbFromUnicode))
End Function

±N­ìµ{¦¡¤¤ªº LenB §ï¬° xLenB
±N­ìµ{¦¡¤¤ªº MidB §ï¬° xMidB
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 10# lionliu

§â­ã¤jªº¤½¦¡§ï¬°¦Û­q¨ç¼Æ
Function xMidB(ByVal str As String, start, length)
    xMidB = Evaluate("MidB(""" & str & """," & start & ", " & length & ")")
End Function

Function xLenB(ByVal str As String)
    xLenB = Evaluate("LenB(""" & str & """)")
End Function
   

¦A¨Ó´N¬O¨ú¥Îªº¸ê®Æ³W«h
¨C20­Ó¦r¨ú¤@¬q¡A­Y¤¤¤å¦r¦b²Ä20­Ó¦r¦ì¸m¡A¥ÎEvaluate¨Ó¨Ï¥Îªí¨ç¼Æ®É·|¦Û°Ê¨ú¬°21­Ó¦r¤¸¡A«O«ù¤¤¤å¦rªº§¹¾ã©Ê¡C¦ý¤U¤@¬q¬O­n¨ú20­Ó¦r©Î19­Ó¦r­n¥ý©w¸q²M·¡¡C
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¥»©«³Ì«á¥Ñ ML089 ©ó 2016-1-24 23:16 ½s¿è

¦^´_ 20# lionliu
­ì©l³Æµù¬O¥HCHAR(13)&CHAR(10)µ²§À¡A­Y­n­«·s¤À¹j¬°20¦r¤¸®É¡ACHAR(13)&CHAR(10)µ²§À¥Î "," ¨Ó´À¥N·|¤ñ¦n¡C


¤@¡B±Ä¥Î¨ç¼Æ¤½¦¡¤èªk
¦WºÙ¤½¦¡
find_text =MIDB(STR,LOOKUP(999,IF({1,0},1,FINDB(INDIRECT("R[-1]C",),STR)+LENB(INDIRECT("R[-1]C",)))),{19;20})
STR =SUBSTITUTE(!$A$2,CHAR(13)&CHAR(10),",")

C6¤½¦¡
C6 =IF(AND(ROW(A1)>1,INDIRECT("R[-1]C",)=""),"",LOOKUP(,0/FINDB(find_text,STR),find_text))

¤½¦¡¨ä¥LÀ³¥Î®É»Ý­n­×§ï ¦WºÙ¤¤ªº $A$2¡A¨ä¥L¤£»Ý­n³B²z¡C


¤G¡B±Ä¥ÎVBA¤èªk
­É¥Î­ã¤jªºVBA­×§ï¦p¤U

Sub ºI¨ú¦r¦ê()
    Dim Arr
    Arr = SPL(Replace([A2], Chr(13) & Chr(10), ","), 20)
    Arr = Split(Arr, Chr(10))
    [H6].Resize(UBound(Arr)) = Application.Transpose(Arr)
End Sub

Function SPL(ByVal xS$, xL%)
    If xS = "" Then Exit Function
    nL = IIf(InStr(xS, xMidB(xS, 1, 20)), 20, 19)
    SPL = xMidB(xS, 1, nL) & Chr(10) & SPL(xMidB(xS, nL + 1, 9999), xL) '»¼¦^³B²z
End Function

Function xMidB(ByVal str As String, start, length) As String
    xMidB = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)
End Function

Function xLenB(ByVal str As String)
    xLenB = LenB(StrConv(str, vbFromUnicode))
End Function

¤T¡B±Ä¥Î¦Û­q¨ç¼Æ¤Î¦Û°Ê´«¦C¤è¦¡
=SPL(SUBSTITUTE($A$2,CHAR(13)&CHAR(10),","),20)
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

        ÀR«ä¦Û¦b : ±o²z­nÄǤH¡A²zª½­n®ð©M¡C
ªð¦^¦Cªí ¤W¤@¥DÃD