条件文で作成した文字列内に改行を入れる方法を教えてください。
下記のようなエクセル(以後、数百行あります)があり、○がついているところの1行目にある文字をK2セルに入力したいと思います。
A B C D E F G H I J K
1 あ い う え お か き く け こ
2 ○ ○ ○ ○ ○
3 ○ ○ ○ ○
K2セルには、○印のついている
あ
え
き
け
こ
と改行して出力されるように関数を組むにはどうしたらいいのでしょうか?
=IF(A2=○,A1&"","")&IF(B2=○,B1,"")&IF(C2=○,C1,"")&IF(D2=○,
D1,"")&IF(E2=○,E1,"")&IF(F2=○,F1,"")&IF(G2=○,G1,"")&IF(H2=○,H1,"")&IF(I2=○,I1,"")&IF(J2=○,J1,"")
と入力してみましたがうまくいかず、これではうまくいったとしても
改行なしで
あえきけこ
と出てしまう気がします・・・。
一晩悩みましたがどうしてもうまくいかないのでどなたか教えてください。
よろしくお願いいたします。
No.1
- 回答日時:
CHAR(10)
を追加して改行するとか。
=IF(A2="○",A1&CHAR(10),"")&IF(B2="○",B1&CHAR(10),"")&IF(C2="○",C1&CHAR(10),"")&IF(D2="○",D1&CHAR(10),"")&IF(E2="○",E1&CHAR(10),"")&IF(F2="○",F1&CHAR(10),"")&IF(G2="○",G1&CHAR(10),"")&IF(H2="○",H1&CHAR(10),"")&IF(I2="○",I1&CHAR(10),"")&IF(J2="○",J1&CHAR(10),"")
ご回答ありがとうございました。
こちらやってみましたが変わりませんでした。
でも改行はctrl+Jだと思っていたのでとても参考になりました。
ありがとうございました。
No.2
- 回答日時:
改行は関数の中でしなくても良いと思います。
と言いますか、できません。縦にセルを結合して十分な長さ(?)を確保して、セルの幅を一文字分まで狭くしてはいかがでしょう。
「セルの書式設定」から「配置」の項目で「折り返して全体を表示する」を選ぶと一文字毎に改行されたような効果を得られます。
さて、関数ですが
IF(A2="○",A1,"")
と「○」に対してダブルクォーテーションで囲む必要があります。
ダブルクォーテーションで囲われない文字は文字列として認識されませんので注意しましょう。
関数を組み合わせて思うように動作しないときは、まずは組み合わせる前の関数の動作を確認しましょう。
意外と簡単に原因を見つけられますよ。
ご回答ありがとうございます。
実際にはあ、い、う、え、おという文字列ではないのでセルの幅を短くして回避は難しかったです。
ありがとうございました。
No.3
- 回答日時:
IF関数のネストは泥臭い。
それにIFのネスト数制限もある。ーーー
かといって、関数では良い方法が思い浮かばない。
多分回答が出ないのではないか。
ーーーー
やむを得ずVBAでユーザー関数を作った。
意味がわかる人にはこんなに簡単。
Function aa(b)
s = ""
For Each cl In b
If cl = "○" Then
s = s & cl.Offset(-cl.Row + 1, 0) & Chr(10)
End If
Next
aa = s
End Function
標準モジュールに入れる。
ーーー
そのユーザー関数の使い方
結果A-K列
あいうえおかきくけこ
○○○○
"あ
え
き
こ
"
○○○○
"い
お
き
け
"
ーーー
K列のK2の式 =aa(A2:J2)
下方向に式を複写。
ーー
K列は、書式ーセルー配置ー「折り返して全体を表示する」
且つ行番号部で行の下線をダブルクリックして、行高を確保しないと
結果が正しく見えない。これは絶対関数ではできない。
ーー
質問の>改行なしで・・はこの点やったのかな。
ただ質問者の式を見る限りCHAR(10)は見えないが。問題はそこだろう。
上記VBAでも、最後の改行が余分だがそのママにしておく。
No.4
- 回答日時:
表の形が「行列逆なら」やり易いですよね。
なので 一旦 別のシートに 行列を入れ替えて貼り付けて
フィルタで抽出してはいかがでしょうか?
No.5ベストアンサー
- 回答日時:
関数では不可能と思いましたので、VBAにしてみました。
一例です。
(1)シートタブ上で右クリック→コード表示
(2)以下のサンプルコードを貼り付け、範囲="K2:k5"を調整→VBE終了
(3)マクロ→サンプルを実行
Sub サンプル()
範囲 = "k2:k5"
For i = 1 To Range(範囲).Cells.Count
a = Application.WorksheetFunction.CountIf(Range(Cells(i + 1, 1), Cells(i + 1, 10)), "○")
If a > 0 Then
sw = 0
For k = 1 To 10
If Cells(i + 1, k) = "○" Then
If sw = 0 Then
Range(範囲).Cells(i) = Cells(1, k)
sw = 1
Else
Range(範囲).Cells(i) = Range(範囲).Cells(i) & vbLf & Cells(1, k)
End If
End If
Next
End If
Next
End Sub
この回答への補足
ご回答ありがとうございます。
これをやってみたら出来たのですが、抽出されて出来た文字列をコピーして秀丸に貼り付けると、
"あ
う
お
き
く
こ"
になってしまいます。
これを
ダブルクオーテーション抜きの
あ
う
お
き
く
こ
にする方法はないでしょうか?
実際にはあいうえおではなく、リンクタグを取り扱っているので、
<a href="http://***.com">●●●</a>m<br>
という文字列が、秀丸にコピペしたとき
"<a href=""http://***.com"">●●●</a>m<br>"
のようにリンク内のタグのクオーテーションがダブルクオーテーションになってしまいます。
エクセル上は問題ないのですがコピペの仕方が悪いのでしょうか?
No.6
- 回答日時:
なかなか解決しませんね。
#2のお礼に対するアドバイスです。
文字の長さを統一されてはいかがでしょうか。
文字の後ろや前にスペースを足すことで解決しそうなんですけど。
文字の長さを揃える際、表示を等幅フォントにすると文字数と幅が一致しますので、関数を入力したセルのフォントを変更してみてください。
例:「MS Pゴシック」→「MS ゴシック」
フォント名に「P」が付いている物はプロポーショナルフォントを示します。
これは文字の幅によってフォントの横サイズを調整しているフォントです。
iiiii(iを5つ)
zzzzz(zを5つ)
↑この2行の幅が違って見える場合はプロポーショナルフォントを使用して表示しています。
No.7
- 回答日時:
NO5です。
改行コードが入っているセルをコピー&貼り付けでは二重引用符が付加されるみたいです。
セル内容(数式バー内容)をコピー&貼り付けではこの引用符が付加されないみたいですが、1セル単位しかできないので今一です。
よって、改行コードを削除してコピー&貼り付けでは駄目でしょうか。
抽出列選択→編集→置換→検索文字列欄にctrl+Jキー押下(改行コードは表示されない)、置換文字列欄は未入力→すべて置換
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
- Excel(エクセル) IFERROR(IF()IF())のような形の構文が作れません 2 2023/02/05 17:51
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセルで#以降の文字を取得したい 1 2022/03/28 13:14
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
wordの何も書かれていない2ペー...
-
Chr(13)とChr(10)の違いは?
-
wordで均等割り付けをするとき...
-
excelで勝手に改行されます
-
棒グラフ 横軸の縦書き2列にし...
-
バッチで指定ファイルの文末に...
-
パワーポイントのテキストボックス
-
【エクセル】セル最後にある無...
-
エクセルでセル内改行の複数行...
-
EXCEL(VBA) 末尾の改行のみ削...
-
VBA フォームのテキストボック...
-
PDFの改行URLを有効にす...
-
WordにURLを載せると
-
Wordで原稿用紙設定の時に、ペ...
-
teratermのコマンド入力文字数...
-
Accessにインポートしようとす...
-
テラパッドで全ての改行削除は...
-
Access2003で特定列の改行コー...
-
Tera Term のマクロでの改行コ...
-
Excel VBAで改行を含めたセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの何も書かれていない2ペー...
-
Chr(13)とChr(10)の違いは?
-
【エクセル】セル最後にある無...
-
wordで均等割り付けをするとき...
-
履歴書の志望動機の所で、「ま...
-
PDFの改行URLを有効にす...
-
Accessにインポートしようとす...
-
excelで勝手に改行されます
-
EXCELで"-"で勝手に自動改行し...
-
棒グラフ 横軸の縦書き2列にし...
-
Tera Term のマクロでの改行コ...
-
PCの表示の文書をコピーすると?
-
イミディエイトウインドウの最...
-
EXCEL(VBA) 末尾の改行のみ削...
-
バッチで指定ファイルの文末に...
-
Excel セル内の最初と最後の改...
-
パワーポイントのテキストボックス
-
パワーポイントのリンク管理に...
-
エクセルでセル内改行の複数行...
-
Word 途中で勝手に改行してしま...
おすすめ情報