- ベストアンサー
エクセルで出来る?
こんにちは B列に疾患名が入力されています。このとき、下のようにC列に疾患数を患者ごとに出したいのですが、そのような関数はありますか?宜しくお願い致します。 cellA1 cellB1 cellC1 患者1 骨粗鬆症 3 脂質異常症 糖尿病 cellA2 cellB2 cellC2 患者2 疾患名 疾患数 ・ ・ ・
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 B列の疾患名は改行(alt+enter)されているものとしています。 C1に=IF(B1<>"",LEN(B1)-LEN(SUBSTITUTE(B1,CHAR(10),""))+1,"")として下方向にコピー
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の意味が説明不足です。 したいことの内容を、文章でも添えてください。 ーーセル内改行してあるデータを、B列のみかけ1行を中心にして、各行に分けたいのか。 答えは、はVBAで解決したいということですね。 ーー セル内科医行数を出したいのなら、CHAR(10)の数を数えて =LEN(B1)-LEN(SUBSTITUTE(B1,CHAR(10),""))+1 で数えられるが。 ーー あるいは下記のように解釈してよいか。 例データ Sheet1 (A!1-C1セル) aaーーー xxーーーー3 ーーーーーyy ーーーーーzzz ーーーーーuuuuu ==== A2-C2セル) bbーーーー xxーーー2 ーーーーーsss ーーーーーttt ーーーーーvv === 結果 Sheet2 aa xx 3 aa yy 3 aa zzz 3 aa uuuuu 3 bb xx 2 bb sss 2 bb ttt 2 bb vv 2 ーーー コード 標準モジュール Sub test01() Dim sh1, sh2 Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") k = 2 d = sh1.Range("A65536").End(xlUp).Row For i = 1 To d s = Split(sh1.Cells(i, "B"), Chr(10)) For j = 0 To UBound(s) sh2.Cells(k, "A") = sh1.Cells(i, "A") sh2.Cells(k, "C") = sh1.Cells(i, "C") sh2.Cells(k, "B") = s(j) k = k + 1 Next j Next i End Sub
お礼
ご回答ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
改行した回数+1で良ければ =LEN(B1)-LEN(CLEAN(B1))+1 でよいかと
お礼
ご回答ありがとうございました。
- kmetu
- ベストアンサー率41% (562/1346)
セル内で改行をして疾患名を羅列するのでしたら cellC2に =LEN(B2)-LEN(SUBSTITUTE(B2,CHAR(10),""))+1 としてください
お礼
ご回答ありがとうございました。
- kirixtukum
- ベストアンサー率8% (3/34)
COUNTAかもです。B列を範囲選択です。選択範囲の中の個数を数えます。
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございました。 おかげさまでできました^^