アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelの文字列の結合でconcatenateを使用する方法があるのは理解しているのですが、以下の例と条件でconcatenateを使用する場合に、どのような式になるのかを教えてください。
また、concatenateを使用しなくてもできるということであれば、その関数及び式を教えてください。


A列 B列 C列 D列 E列 F列
結合結果 コード名1 コード名2 コード名3 コード名4 コード名5
12;34;56;78;90 12 34 56 78 90

・B列からF列にはコード名が入り、その結合結果をA列に表示させたい。
・結合結果として、コード名とコード名の間には「;(セミコロン)」が必ず入る。
・B列からF列までは必ずしも全ての列にコード名が入るわけではなく空欄になることもありうるが、その場合に入力されるコードは左詰めになる(例えば、途中のD列だけが空欄になることはない)。
・例えば、E列とF列に空欄ができた場合、結合結果は「12;34;56」になる。「12;34;56;;」にはならない。

ちなみに、使用しているExcelのバージョンは2013です。
どうぞよろしくお願いいたします。

A 回答 (5件)

では、ちからワザで。



=CONCATENATE( IF(Bx<>"",Bx&IF(Cx&Dx&Ex&Fx<>"",";",""),"") , IF(Cx<>"",Cx&IF(Dx&Ex&Fx<>"",";",""),"") , IF(Dx<>"",Dx&IF(Ex&Fx<>"",";",""),"") , IF(Ex<>"",Ex&IF(Fx<>"",";",""),"") , Fx )

=IF(Bx<>"",Bx&IF(Cx&Dx&Ex&Fx<>"",";",""),"") & IF(Cx<>"",Cx&IF(Dx&Ex&Fx<>"",";",""),"") & IF(Dx<>"",Dx&IF(Ex&Fx<>"",";",""),"") & IF(Ex<>"",Ex&IF(Fx<>"",";",""),"") & Fx
    • good
    • 0
この回答へのお礼

ちからワザで式を書いてくださいましてありがとうございます!

真っ先にご回答いただいたのに、残念ながら採用できず心苦しく思っておりました。
今回はとても大変だったと思います。
なので、ほーほけきょッさんの回答をベストアンサーとさせてください。

お礼日時:2020/10/14 17:07

No.3です。



>下記の通りです

ん?もしかしてExcelのバージョンのコトですかね?
前回の方法はExcelのバージョンに関係なく使えるはずです。

※ 会社でVBA禁止!という場合は無理かもしれませんが・・・m(_ _)m
    • good
    • 0
この回答へのお礼

>前回の方法はExcelのバージョンに関係なく使えるはずです。

すみません。
仰る通り、バージョンのことです。
今はPCの前にいるので検証可能なのですが、さっきは離席しておりまして、スマホで回答を見ておりました。
ご回答のユーザーさまが違えど、№2との続きかと勝手に勘違いしておりました。
心の中でベストアンサーとさせてください。

お礼日時:2020/10/14 17:10

こんにちは!



No.2さんが仰っているユーザー定義関数にしてみました。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペーストしてみてください。

Function mystr(myRng As Range) '//この行から//
 Dim c As Range
 Dim buf As String
  For Each c In myRng
   If c <> "" Then
    buf = buf & c & ";"
   End If
  Next c
   mystr = Left(buf, Len(buf) - 1)
End Function '//この行まで//

そしてExcel画面に戻り(VBE画面を閉じて)
通常のワークシート関数と同じ使い方をします。

仮に2行目以降にデータがある場合はA2セルに
=mystr(B2:F2)

という数式を入れます。

※ エラー処理はIF関数などを使って普通に行います。m(_ _)m
    • good
    • 0
この回答へのお礼

つらい・・・

回答ありがとうございます。
下記の通りです。

お礼日時:2020/10/14 16:33

VBAに登録するユーザー定義関数を使うのは駄目ですか?


Excel2016以降(最新版に更新できるもの)なら、TEXTJOIN関数で
希望の処理が簡単にできます。
https://www.tipsfound.com/excel/04textjoin
Excel2013だと、TEXTJOIN関数がないので複雑な処理が必要です。
(No.1さんのIFの組み合わせになるので、列数が増えたときに大変)
なのでユーザー定義関数を使うことをお勧めします。
https://www.excelspeedup.com/textjoin2/
    • good
    • 0
この回答へのお礼

へこむわー

回答ありがとうございます。
すみません。
最新版を使いたいのですが、会社で使用しているexcelのバージョンが2013なのです。

お礼日時:2020/10/14 16:32

=CONCATENATE( IF(Bx<>"",Bx&";",""), IF(Cx<>"",Cx&";",""), IF(Dx<>"",Dx&";",""), IF(Ex<>"",Ex&";",""), IF(Fx<>"",Fx&";","") )



=IF(Bx<>"",Bx&";","")&IF(Cx<>"",Cx&";","")&IF(Dx<>"",Dx&";","")&IF(Ex<>"",Ex&";","")&IF(Fx<>"",Fx&";","")
    • good
    • 0
この回答へのお礼

ほーほけきょッさん、早速の回答ありがとうございます。
試してみましたが、いずれの方法も最後にセミコロンが残ってしまいます。

コードとコードの間にだけセミコロンが必要なのですが。。。
他にありますでしょうか。

お礼日時:2020/10/14 15:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す