- ベストアンサー
文字列を1セル1文字で入力する
エクセルの文字入力で困っています。 1セル1文字で効率的に文字入力ができる方法が ないか悩んでいます。 イメージとしては、文字列を入力して エンターキーを押した後、自動的に1セル1文字で 入力される方法があったら嬉しいなぁっと 思っています。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな式で、下にドラッグして、文字列を分解する方法もありますが、 =IF(ROW(A1)>LEN($A$1),"",MID($A$1,ROW(A1),1)) (A1:文字列, Rowの中のA1は、ダミーですから、いつでも、最初は、A1) 簡単なマクロを作りました。試してみてください。 画面の下の使っている場所のシートタブ(例:Sheet1)のところを右クリックして、以下を貼り付けてしてください。 Sub 文字分割() ans = Application.InputBox("文字列を入力してください", Type:=2) If ans = "" Or ans = False Then MsgBox "データが空です.": Exit Sub Application.ScreenUpdating = False For i = 1 To Len(ans) ActiveCell.Offset(i - 1).Value = Mid$(ans, i, 1) Next i Application.ScreenUpdating = True End Sub 後は、フォームボタンでも、ワークシートに取り付けて、このマクロを登録すれば、マクロの起動は簡単です。
その他の回答 (2)
- TUNE0040
- ベストアンサー率26% (220/842)
ひらがな←→カタカナ変換という処理をしたときに使った方法です。 A列に文字列を入力します。 B列にはその文字列長を表示させます。(LEN関数) C列以降に、一文字ずつ表示させます。 1行目にはカウンタを入力します。 セルC1に1を入力します。 セルD1には =C1+1 という式を入力します。 セルE1以降は、その式を複写すればOKです。 A列に入力する予定の文字列長分あればOKです。 2行目からはいよいよデータ行です。 セルC2には次のように入力してください。 =IF(C$1>$B2,"",MID($A2,C$1,1)) これを縦、横に複写すればOKです。 さらにB列のLEN関数も縦に複写してください。 一応これで完成です。 セルA2以降に入力していけば自動的に処理されます。 このデータを活用したいときは、ワークシート全体を値複写すればOKです。 いかがでしょうか。
お礼
丁寧なご説明有り難うございます。 大変勉強になります。 私はエクセル初心者でちょっと何かやろうと思うと すぐ行き詰まってしまいます。 本当に有り難うございました。
- macchan1
- ベストアンサー率38% (52/136)
通常の操作ではエクセルでご希望の操作はできません。 マクロを利用するとそれに似た操作は可能かもしれませんが、一定の条件で入力するのでない限りまったく実用性はありません。逆に、いったん入力したものを後で分離するほうが実用的だと思います。 この場合でしたら、マクロでも対応しやすく、関数や区切り位置の機能を用いることもできます。 例えば区切り位置を利用する場合は、 データ範囲の列を選択して、「データ」「区切り位置」で「スペースによって・・・」にチェックを入れ、「次へ」で1文字ごとに区切りを入れることで1文字ずつに分離できます。
お礼
ご指南有り難うございます。 区切り位置機能は初めて使いました。 勉強になりました。 本当に有り難うございました。
お礼
早速、マクロを使用させて頂きました! イメージ通りのことが出来てとても嬉しいです。 本当に有り難うございました。 今後とも宜しくお願い致します。