[[20060121164813]] 『セルをつなげたい』(奈美子) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルをつなげたい』(奈美子)
 セルA1から、A8までのセル内の文字ををB1につなげたいのですが
そのつなげる時に、/を間に入れたいのです。ただ、A1からA8までは
空白があったらり、一つしかなかったり、するので、うまく、/を
入れてつなげることが出来ません。/りんご とか、みかんもも のように
/がいらないのにはいったり、つながってしまったり、してしまいます。
ご教授ください

 ユーザー関数っちゅうんはどうでっか?
 まあ、試してみてください。
 Alt+F11でVBEを開き
 挿入→標準モジュールを選択
 下のコードをコピペ
 エクセルに戻り =namiko(a1:a8,"/")とB1に入力しますと、あんたはんのご希望の
 データが得られまっせぇ。
 但し私の勘違いがなければの話ですけど・・・(笑
        (弥太郎)
 '----------------------------
 Function namiko(data As Range, sp_data As String)
     Dim picup_data(), c
     Dim i As Integer

     For Each c In Range(data.Address)
         ReDim Preserve picup_data(i)
         If c <> "" Then
             picup_data(i) = c
             i = i + 1
         End If
     Next c
     namiko = Join(picup_data, sp_data)
     If Right(namiko, 1) = sp_data Then
         namiko = Left(namiko, Len(namiko) - 1)
     End If
 End Function

 if right(.... の行を一部訂正〜 "/"で無くても入力したデータで分割
      PM17:54訂正
 ----
 ↓こちらを参考に、手を加えてみました(あきお)
 vba_top
http://www.daito.ac.jp/~tkadoda/vba/vba_top.htm

 標準モジュールに下記をコピペして、 B1 のセルに  =Sconc(A1:A8)

 Option Base 0
 Option Explicit
 Function Sconc(ParamArray Samples() As Variant) As String
    Dim sAns As String, i As Long, vThings As Variant
    sAns = ""
    For i = 0 To UBound(Samples)
        If VarType(Samples(i)) < vbArray Then
            sAns = sAns & CStr(Samples(i))
        Else
            For Each vThings In Samples(i)
                If Len(CStr(vThings)) > 0 Then
                    sAns = sAns & "/" & CStr(vThings)
                End If
            Next
        End If
    Next i
    If Left(sAns, 1) = "/" Then
        Sconc = Mid(sAns, 2, Len(sAns))
    Else
        Sconc = sAns
    End If
 End Function

 地道に
 B1=LEFT(IF(A1="","",A1&"/")&IF(A2="","",A2&"/")&IF(A3="","",A3&"/")&IF(A4="","",A4&"/")&IF(A5="","",A5&"/")&IF(A6="","",A6&"/")&IF(A7="","",A7&"/")&IF(A8="","",A8&"/"),LEN(IF(A1="","",A1&"/")&IF(A2="","",A2&"/")&IF(A3="","",A3&"/")&IF(A4="","",A4&"/")&IF(A5="","",A5&"/")&IF(A6="","",A6&"/")&IF(A7="","",A7&"/")&IF(A8="","",A8&"/"))-1)
 こんなのはどうでしょう。
 A1〜A8の間に何も入力されていないときはエラーが出ますが・・・・。

 出ないようにするには、安直に
=IF(A1&A2&A3&A4&A5&A6&A7&A8="","",LEFT(IF(A1="","",A1&"/")&IF(A2="","",A2&"/")&IF(A3="","",A3&"/")&IF(A4="","",A4&"/")&IF(A5="","",A5&"/")&IF(A6="","",A6&"/")&IF(A7="","",A7&"/")&IF(A8="","",A8&"/"),LEN(IF(A1="","",A1&"/")&IF(A2="","",A2&"/")&IF(A3="","",A3&"/")&IF(A4="","",A4&"/")&IF(A5="","",A5&"/")&IF(A6="","",A6&"/")&IF(A7="","",A7&"/")&IF(A8="","",A8&"/"))-1))

 (HANA)

 =SUBSTITUTE(TRIM(A1&" "&A2&" "&A3&" "&A4&" "&A5&" "&A6&" "&A7&" "&A8)," ","/")
 とするのもありますね。                        (LOOKUP)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.