• ベストアンサー

エクセル 文字列について

エクセルの文字列に付いて教えてください。 詳細は添付ファイルに記しています。 バージョンは2010です。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! >氏名がたとえば100人分あったり、途中で氏名の一部が変更された場合等・・・ 関数ではかなり厄介だと思います。 そこでVBAでの一例です。 1行目項目に必ず「合計」という項目があるとし、その右隣りの列に表示させるようにしています。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, lastCol As Long, str As String lastCol = WorksheetFunction.Match("合計", Rows(1), False) For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row For j = 2 To lastCol - 1 If Cells(i, j) > 0 Then str = str & Cells(1, j) & "," End If Next j If Len(str) > 0 Then Cells(i, lastCol + 1) = Left(str, Len(str) - 1) End If str = "" Next i Columns.AutoFit End Sub 'この行まで ※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m

masa470421
質問者

お礼

回答ありがとうございます。 こんな方法があったんですね。 私のイメージに一番近いです。 しかし、言葉の通じない部下に通じるか問題ですが・・・。

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

簡単な数式で処理するには該当者の列の右側に作業用の列を使う必要があります。 提示された4名の場合は次の数式で良いでしょう。 G2=IF(B2,B$1&IF(H2<>"",","&H2,""),IF(COUNTA(H2),H2,"")) G2セルを右へ必要数(提示の場合はJ列まで)コピーし、下へ必要数(提示の場合は6行まで)コピーします。 貼付画像はExcel 2013で検証しましたが全てのバージョンで再現できるはずです。

masa470421
質問者

お礼

回答ありがとうございます。 簡単な数式なので試しに使用してみます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

時折寄せられるご相談の一種ですが、沢山のセルの文字列を簡単に結合する関数ってのは、実はありません。基本は一個ずつちまちまチマチマと拾って、結合していくしかないってことです。 で。 手を動かすのがメンドクサいなら、例えば次のように工夫して作成する事もできます。 シート2のB2に =A2&IF(Sheet1!B2=0,"",","&Sheet1!B$1) と記入、右に下に必要なだけ(ご相談で掲示の画像ならE列まで)コピー貼り付け G2に =MID(Sheet2!E2,2,999) と記入、下にコピー貼り付けて完成。

masa470421
質問者

お礼

回答ありがとうございます。 地道にやるのが一番なんですね・・・。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

単純に =IF(B2>0,"山本,","")& IF(C2>0,"佐藤,","")& IF(D2>0,"川崎,","")& IF(E2>0,"田中,","") って話なんじゃ?

masa470421
質問者

お礼

回答ありがとうございます。

masa470421
質問者

補足

説明足らずですいません。 氏名がたとえば100人分あったり、途中で氏名の一部が変更された場合等にB1,C1,D1,E2~AA1の部分を変更して、簡単に反映出来る方法はないですか?

関連するQ&A