- ベストアンサー
Excel 特定の文字と連結
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>ちなみに、サンプルでは結合する文字「c」や「e」はデータの最後になっているのですが、さらにデータが右にある場合(F1やE2など)、左へ詰めることは可能なのでしょうか? もし、元データを入力する列数や行数を増やしたいのでしたら、「あ」~「そ」等が入力されているリストや、連結してから左詰めにした結果を表示する表を、元データを入力する表とは別のシートにされた方が良いと思います。 例えば、元データがSheet1のA1から始まっていて、その右方向と下方向に表が続いている場合、連結してから左詰めにした結果を表示する表を、Sheet2に表示させる様にして、「あ」~「そ」等が入力されているリストはSheet3のA1~E3に移動させます。 その上で、Sheet4を作業用シートとして使用する様にします。 その場合、各関数を入力するセルと、各関数の参照先が変わりますから、以下の様に操作して下さい。 まず、Sheet4のA1セルに次の関数を入力して下さい。 =IF(OR(Sheet1!A1="",AND(COLUMN(Sheet1!A1)>1,COUNTIF(Sheet3!$A$1:$E$3,INDEX(Sheet1!1:1,COLUMN(Sheet1!A1)-1)))),"",CHAR(9)&COUNTIF(B1:INDEX(1:1,COLUMNS(1:1)),"="&CHAR(9)&"*")&CHAR(9))&Sheet1!A1&IF(COUNTIF(Sheet3!$A$1:$E$3,Sheet1!A1),B1,"") 次に、Sheet4のA1セルをコピーして、Sheet4のA1セルよりも右側にあるセル範囲に(Sheet1の元データの表の列数を上回るのに十分な列数となる様に)貼り付けて下さい。 次に、Sheet4の1行目全体をコピーして、Sheet4の2行目以下に(Sheet1の元データの表の行数を上回るのに十分な行数となる様に)貼り付けて下さい。 次に、A6セルに次の関数を入力して下さい。 =IF(COLUMNS($A:A)>COUNTIF(15:15,CHAR(9)&"*"),"",REPLACE(INDEX(15:15,MATCH(CHAR(9)&COUNTIF(15:15,CHAR(9)&"*")-COLUMNS($A:A)&CHAR(9)&"*",15:15,0)),1,LEN(COUNTIF(15:15,CHAR(9)&"*")-COLUMNS($A:A))+2,)) 次に、Sheet2のA1セルに次の関数を入力して下さい。 =IF(COLUMNS($A:A)>COUNTIF(Sheet4!1:1,CHAR(9)&"*"),"",REPLACE(INDEX(Sheet4!1:1,MATCH(CHAR(9)&COUNTIF(Sheet4!1:1,CHAR(9)&"*")-COLUMNS($A:A)&CHAR(9)&"*",Sheet4!1:1,0)),1,LEN(COUNTIF(Sheet4!1:1,CHAR(9)&"*")-COLUMNS($A:A))+2,)) 次に、Sheet2のA1セルをコピーして、Sheet2のA1セルよりも右側にあるセル範囲に(Sheet1の元データの表の列数を上回るのに十分な列数となる様に)貼り付けて下さい。 次に、Sheet2の1行目全体をコピーして、Sheet2の2行目以下に(Sheet1の元データの表の行数を上回るのに十分な行数となる様に)貼り付けて下さい。 以上です。
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.1です。 回答No.1で示した例でやり方を説明致したいのですが、回答No.1で示した例では元データとなる文字が入力されているセルがF列まであるため、「あ」~「そ」のリストの位置を少しずらして、J1~N3の範囲にリストがあるものとします。 又、今仮に、15行目~18行目を作業行として使用するものとします。 まず、A15セルに次の関数を入力して下さい。 =IF(OR(A1="",AND(COLUMN(A1)>1,COUNTIF($J$1:$N$3,INDEX(1:1,COLUMN(A1)-1)))),"",CHAR(9)&COUNTIF(B15:INDEX(15:15,COLUMNS(15:15)),"="&CHAR(9)&"*")&CHAR(9))&A1&IF(COUNTIF($J$1:$N$3,A1),B15,"") 次に、A15セルをコピーして、B15~I15の範囲に貼り付けて下さい。 次に、A15~I15の範囲をコピーして、同じ列の16行目以下に貼り付けて下さい。 次に、A6セルに次の関数を入力して下さい。 =IF(COLUMNS($A:A)>COUNTIF(15:15,CHAR(9)&"*"),"",REPLACE(INDEX(15:15,MATCH(CHAR(9)&COUNTIF(15:15,CHAR(9)&"*")-COLUMNS($A:A)&CHAR(9)&"*",15:15,0)),1,LEN(COUNTIF(15:15,CHAR(9)&"*")-COLUMNS($A:A))+2,)) 次に、A6セルをコピーして、A6~I14の範囲に貼り付けて下さい。 以上です。
[No.2補足]へのコメント、 》 ちなみに、…になっているのですが、さらに…場合、…ことは可能なのでしょうか? 最初からそう言いなさい!「ちなみに」の後出しは不愉快です。
簡単のために、A列の全セルを空白とします。 添付図参照 G6: =COUNTIF($G$1:$K$3,B1) 此れを右に3列、下に2行ドラッグ&ペースト B6: =IF(B1="","",IF(G6,B1&C1,IF(F6,"",B1))) 此れを右に3列、下に2行ドラッグ&ペースト
補足
ご回答ありがとうございました。 上手くできました。 ちなみに、サンプルでは結合する文字「c」や「e」はデータの最後になっているのですが、さらにデータが右にある場合(F1やE2など)、左へ詰めることは可能なのでしょうか? 教えていただいた方法でやってみたところ、空白になりました。 もし、可能であれば、教えていただきたいです。
- kagakusuki
- ベストアンサー率51% (2610/5101)
どの様にされたいのか、条件が良く解りませんので、御説明を御願いします。 例えば A列 B列 C列 D列 E列 F列 1行目 あ a g か h j 2行目 き あ d v m 3行目 a h j さ 4行目 い き し 等と並んでいた場合には、どの様に連結させた上で、どのセルを削除すれば良いのでしょうか? 又、削除したセルがあった場所は間を空けて表示をするのか、それとも左詰めに詰めて表示すれば良いのか、どちらになるのでしょうか? 又、右側にある文字は、 あ い う え お か き く け こ さ し す せ そ の様に、縦1列か横1列に並べて頂く訳には参りませんでしょうか? 上記の点に関して、具体的な例を示して御説明願います。
補足
ご回答いただき、ありがとうございます。 1.右側にある文字 縦1列でも横1行でも可能です。 2.削除後 左に詰めて表示したいです。 3.連結方法 A列 B列 C列 D列 E列 F列 1行目 あa g かh j 2行目 きあd v m 3行目 a h j さ 4行目 いきし のような感じです。 説明不足で申し訳ございません。
お礼
出来ることなら…という思いで「ちなみに」と記述したのですが、不愉快に感じられたということで申し訳ございませんでした。