[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『続いてる文字列の間にスペースを空けたい』(りんご)
関数では無理ですよね。
たとえば、「田中一郎」という名前が1つのセルに入っているとします。
それを「田 中 一 郎」にしたいのです。
文字列は何文字かはわかりません。
VBA・・ちょっとはわかるんですけど・・・。
私もちょっと・・・なのですが、ユーザー定義関数を作ってみました。 Function inst(ByVal data As String) As String Dim n As Integer Dim mydata As String For n = 1 To Len(data) mydata = Mid(data, n, 1) inst = inst & mydata & " " Next n End Function これで良いと思うのでが・・・(ケン)
いじわる[爺さん]登場。 昨夜中華料理を食って精算しようとしたら『お客さんは60才以上なので1割引』 おいおいまだそんな年じゃないって、55ですよ。結局得しましたが。
[ケン]さんのコードでOKです、
[りんご]さんこのまま使ってください。
以下はプログラミングの勉強なので無視してください。
="#"&inst("隣の客はよく柿食う客だ")&"#"で使ってみるとわかりますが 最後にスペースが入ります。
#隣 の 客 は よ く 柿 食 う 客 だ #
もしこれは困るといわれたらどう対策しますか?
(kazu)
ぷっ、いじわる爺さん・・ぷっ 最後にスペースが入るのは分かっていました・・・ くるしまぎれのifで Function inst(ByVal data As String) As String Dim n As Integer Dim mydata As String For n = 1 To Len(data) mydata = Mid(data, n, 1) If n = Len(data) Then inst = inst & mydata Else inst = inst & mydata & " " End If Next n End Function と対処しましたがkazuさんならどうしますか?教えてください。 もう一つ質問ですがForの前にinst = "" と定義する方がいいのでしょうか?(ケン)
ほんならわたしゃケンさんの向こうを張って現在のデータにスペースを挟みます。 データの最上行にポインターをセットしてください。 その前に >『お客さんは60才以上なので1割引』 私は未だにそんな目に遭うてまへん。へへ、何となく愉快。 ほな、(弥太郎)
Sub spas() Dim Rtn As Integer, t As Integer, i As Integer, j As Integer Dim data_a As String, data_b As String
Rtn = MsgBox("スペースを挿入セルにセット出来ていますか?", vbYesNo) If Rtn = vbNo Then Exit Sub If ActiveCell.Value = "" Then Exit Sub t = ActiveCell.Column max_row = ActiveCell.End(xlDown).Row For i = ActiveCell.Row To max_row For j = 1 To Len(Cells(i, t)) - 1 data_b = Mid(Cells(i, t), j, 1) + " " data_a = data_a + data_b Next j Cells(i, t) = data_a + Right(Cells(i, t), 1) data_a = "" Next i End Sub
弥太郎さん、まいど〜有難う御座います。 >私は未だにそんな目に遭うてまへん そのうち・・・・ですよ。 ところで、お部屋にビールが届いていましたよ。無用心やな〜 (ケン)
みなさん、本当にありがとうございました。
ユーザー定義関数は、私・・わかりません。
それで、弥太郎さんのでできました。
参考までに、ユーザー定義関数は、どのようにstringという関数に結びつけたらいいのですか?
それから、逆にスペースがランダムにあいている、文字列のスペースを削除したいのですが、これはどうしたらよいのでしょうか。
例 「山田 太 郎」を「山田太郎」にする。
すみません、まだまだ初心者なもので・・。
(りんご)
ユーザー関数は普通の関数と同じく=inst(A1)の様に使って下さい。 それからスペースの削除は「置換え」機能を使い「検索する文字列」にスペースを いれ置換えで出来ます。(ケン)
[りんご]さんすみません、順番が狂ってしまって。
[ケン]さんの質問への答え。
最近の若いもんはこれだから困るんじゃ。←なぜか急に老人調に。 この程度のものにifなんか使ってはだめです。 [弥太郎]さんのがだいぶ近いです。
Function inst(ByVal data As String) As String Dim n As Integer data = data & " " For n = 1 To Len(data)-2 inst = inst & Mid(data, n, 1) & " " Next n End Function
(kazu)
↑これkazuさんですよね?有難う御座います。but 最後の1文字が消えてしまいます。1週回るのが少ないような気が・・(ケン)
なんと、ニックネームも長さの計算もポカしました。 いよいよご老体ですね。 [訂正版]↓
Function inst(ByVal data As String) As String Dim n As Integer data = data & " " For n = 1 To Len(data)-1 inst = inst & Mid(data, n, 1) & " " Next n End Function
(kazu)
誤:一週回る 正:一周回る (kazu)
ユーザー定義関数って便利なんですね。
kazuさん、ケンさん、弥太郎さん、本当にありがとうございました。(リンゴ)
字を間違えた〜。取りあえず、リンゴさんが解決出来たようなので、めでたしめでたし。 (ケン)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.