• ベストアンサー

Excel 特定の文字列が連続で続いたら非表示

セル内の特定の文字列が2個以上連続してる場合、連続している文字列を非表示にしたい。 セルに横一列にデータを入力し、=C2&","&D2&","&E2&","& ,,,,, 横の列にはデータを","を入れて文字列を結合したセルを表示させます。 例 データの文字列が1 2 3 4 5と入力されていたら 1,2,3,4,5,,,, と表示され複数セルの入力された文字列が結合した形で表示されます。 これを 1,2,3,4,5 とカンマ","が2個以上連続したらデータの(この場合5)後ろの連続しているカンマを非表示にしたいです。 Excelは2016で、使用できる関数が限られています。 この場合、他の関数の組み合わせで1,2,3,4,5と連続するカンマを非表示にする方法はありますでしょうか。 Excelのシートは添付画像の通りです。 詳しい方いましたら、ご教授下さい。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

2行目の結果を表示したいセルに =SUBSTITUTE(TRIM(C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2&" "&I2&" "&J2&" "&K2)," ",",") として必要なだけ下にコピーしてみてください。

nadeko666
質問者

お礼

非常に助かりました。 文字列結合時に空欄箇所がある場合に活用しようと思います。

Powered by GRATICA
nadeko666
質問者

補足

迅速な回答、有難うございます。 隣の行に関数をコピペしたところ、",,"連続したカンマが消え、1,2,3,4,5表示になりました。 =SUBSTITUTE(TRIM(C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2&" "&I2&" "&J2&" "&K2)," ",",") 文字置換のSUBSTITUTE関数と不要スペース削除をするTRIM関数を組み合わせているようですが、 検索文字列が" "で置換文字列が削除する","なのはなぜでしょうか。 SUBSTITUTE関数、TRIM関数を確認しているのですが、なぜ重複しているカンマを消すことが出来るのでしょうか。 TRIM(C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2&" "&I2&" "&J2&" "&K2)と文字列の同士の間にカンマではなくスペースをかましているのも気になりました。 カンマを消したいという悩みは解消したのですが、理屈がいまいち掴めていないです。 ご教授い頂けたら幸いです。

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.5

> 結合時に連続したカンマを削除できるようにあえて、空白で結合させて、トリム後、カンマに置換するということでしょうか。 そうですね。今回の場合は、TRIM関数で空白を削除するパターンが余計なカンマを削除する結果と一致したという事です。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.4

回答No.3一部訂正です。 途中の空白は削除しませんから ↓ 途中の空白は一個だけの場合は削除せず、複数連続した場合は一個だけ残して削除しますから

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.3

> 検索文字列が" "で置換文字列が削除する","なのはなぜでしょうか。 TRIM関数は、文字列の前後の空白を削除し途中の空白は削除しませんから C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2&" "&I2&" "&J2&" "&K2 これで 2行目のデータは(vを空白と考えてください) 1v2v3v4v5vvvv となり TRIMで5より後ろの空白が削除されて 1v2v3v4v5 となったデータの空白を「,」に置換して 1,2,3,4,5 となります。

nadeko666
質問者

補足

補足ありがとうございます。 TRIM関数は、文字列の前後の空白を削除し途中の空白は削除しませんから >> 結合時に連続したカンマを削除できるようにあえて、空白で結合させて、トリム後、カンマに置換するということでしょうか。

回答No.2

物凄くむつこい関数ですが、 M2セルに =IF(RIGHT(SUBSTITUTE(L2,REPT(",",LEN(L2)-LEN(SUBSTITUTE(L2,",,",""))),""),1)=",",LEFT(SUBSTITUTE(L2,REPT(",",LEN(L2)-LEN(SUBSTITUTE(L2,",,",""))),""),LEN(SUBSTITUTE(L2,REPT(",",LEN(L2)-LEN(SUBSTITUTE(L2,",,",""))),""))-1),SUBSTITUTE(L2,REPT(",",LEN(L2)-LEN(SUBSTITUTE(L2,",,",""))),"")) あとは下にオートフィルでいかがでしょうか? VBAを構築するのが手っ取り早いとは思うのですが・・・。

関連するQ&A

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセルで0表示以外のセルの文字列を結合する方法

    エクセル(2003)で文字列の結合を「&」や「CONCATENATE関数」を使っておこなっていますが、文字列の空白または0表示の箇所のセルがあると「文字列000文字列00」のように「0」が表示されてしまいます。IF関数を併用してやっても「0」が表示されます。どのようにしたら「文字列 文字列」のように0表示なしで結合できるでしょうか。教えて下さい。現在、約180のセルにある文字列を1つに結合しようとしています。そのうちの結合文字列は多くて20ぐらいです。また、各セルの文字列はVLOOKUP関数により返しています。よろしくお願いします。

  • ふたつめのカンマと3つ目のカンマの文字列を表示させたい

    こんにちは。表題の件質問させていただきます。 EXCELで、Find関数を使い、カンマ区切のデータ中、最初のカンマが見でくる直前のデータを表示させています =IF(セル番地="","",(LEFT(セル番地,FIND(",",セル番地)-1))) が、表題のように、2番目と3番目のカンマの間の文字列を切り出したい、という場合にFIND関数でできなさそうです。 もし知恵を拝借できれば幸いです。 よろしくお願いいたします

  • Excel 2つの数字と文字列を含む連続データ

    1セル内に2つの数字と文字列を含む場合の連続データの作成方法を教えてください。 下記のような連続データを作成したいです。 関数は使用せずに、連続データの作成もしくはオートフィルを使用した場合作成可能でしょうか。 可能な場合方法を教えてください。 1名1室 1名2室 2名1室 2名2室 3名1室 3名2室 4名1室 4名2室 ・ ・ ・ Excel2010を使用しています。 以上、よろしくお願いします。

  • Excelで長い文字列の入力について

    PCはWinXPです。Excelでセルを越える文字列が隣のセルに入力されたデータに隠されて、データが途中までしか表示されないことがあります。このような場合書式をイメージしてセル結合して入力してますがこの方法で正しいのでしょうか?途中でイメージ作業が必要になり修正も要する事もありもっといい方法があると思うのですが、よろしくご教示下さい。

  • エクセルで列の全ての項目に文字を追加したい

    表題が分かりづらくてすみません。 エクセルの表で、縦一列に人名が書いてあるとします。 例えば  田中 一郎  鈴木 花子  山田 二郎 (以下同様に人名羅列)    その列の人名の後ろ全てに敬称(様)をつけたい場合、いつも一つ一つ貼り付けしているのですが、範囲を指定したり、連続するセルにまとめて文字を追加できる良い方法はないでしょうか? 試しに横の列に「様」を入力して、セルを結合させてみたりしましたが失敗に終わりました。 同様に、縦列の数字の後ろや頭に数字や文字を追加できる方法はありませんか? ご存知の方、ぜひよろしくお願いいたします。      

  • エクセルの表で特定の列を表示する方法

    お世話になります。 エクセル2007を利用しています。 エクセルの表で条件を満たした時、その列を表示させる方法はないか?と 困っています。 例えは、条件を入力する作業セルを決めて、行7に5キロと入力があれば、 そのセルへ”5”と入力すると、5キロと入力されている列だけを表示させる、 といった具合です。 過去からのデータも残したいと思っており、複数の人が横へ横へ データを更新していくため、非表示では、(ctrlでまとめて選んでも) 時間がかかってしまいます。 また、必要な列を表示していなかったり、不要な表示していたりと ミスが多くなっています。 どなたか、詳しい方ご教示頂けましたら助かります。 宜しくお願いいたします。

  • Excelで特定文字を数える

    Excelを使っています。 かなりのデータ(行・列ともに)があるのですが、 それぞれのセルの文字列の中にある”・”の数を数えて 別のセルに表示させたいのです。 文字列操作の関数に、文字列の中から特定文字を探し出し その位置を知らせる、というものは見つかったのですが、 上記のような条件に当てはまるものはみつかりませんでした。 どういった方法があるでしょうか。 よろしくお願いします。

  • Excel 2003 連続データ

    文字列にしたセルに 1と入力して連続データは 1,2,3,4,5・・・・と なります。 これを 10,20,30,40・・・・と 増えていくように設定できますでしょうか? 10,11,12,13,14・・・としか できなくて 困っています; なにか ヒントを・・・ やっぱり 関数ですかね?

  • Excelでの文字列の結合

    Excelで文字列を結合したいのですが、可能でしょうか? 例えば、セルA1に「abc」、セルB1に「def」と入力し、 それをセルC1に「abcdef」と表示させたいのです。 方法がわからなかったので、 一度txtファイルに変換して保存し、 表示する時にスペースで区切らないようにし表示させたのですが、 うまくいきません。 表示は「abcdef」とキレイに表示されるのですが、 検索コマンドで「abcdef」と入力しても検索されません。 ですので、VLOOKUPなどの関数が使用出来なくて困っています。 どのようにすればいいのでしょうか? よろしくお願いします。

専門家に質問してみよう