[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一気に処理する仕方』(lion)
いつもお世話になっております。ご教授ください。
Sheet1 のA2:A5それぞれに・(全角)で区切られた単語が入っているとします。例えば以下のようなものです。
り・ん・ご
け・い・た・い
ほ・ん
ちょ・こ・れ・−・と
これをそれぞれB2からのセルにばらして格納したいと思います。つまりこういうことです。
り・ん・ご り ん ご
という表示になります。これをまとめて一気に処理するコードをご教示くださいませんでしょうか。
< 使用 Excel:Excel2016mac、使用 OS:MacOSX >
(マナ) 2017/10/09(月) 17:16
ありがとうございます。ネットで検索しますと,配列,splitといったものを使用するのではないかと察します。マクロの記録で行ったのですが,そういったものは見当たらず(arrayはありましたが...),得られたコードを私が編集して作成するのは至難の業ですので,どなたかご協力をいただけましたら幸いに存じます。
(lion) 2017/10/09(月) 17:43
https://www.becoolusers.com/excel/text-to-columns.html
手作業でも1分もかかりません。
(マナ) 2017/10/09(月) 17:47
申し訳ございません。サイトのように試したのですが,以下のようなものしか出て参りません。
繰り返しになりますが,私にはここからの変更が難しく,どなたかお知恵を貸していただけませんか。
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :="・", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
(lion) 2017/10/09(月) 19:29
私がやると、こんなのが出来上がりました。
Sub Macro1() Columns("A:A").Select ’A列をB列にコピーする Selection.Copy Columns("B:B").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :="・", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _ 1)), TrailingMinusNumbers:=True End Sub
・・で、それを整理すると、こんなのになります。
Sub Macro2() Columns("A:A").Copy Range("B1")
Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="・" End Sub
(半平太) 2017/10/09(月) 19:46
勉強のために,どなたかぜひご教授いただきたいのですが,配列でコードを書くことは可能でしょうか。
(lion) 2017/10/09(月) 22:51
>勉強のために
Sub test() Dim a, i As Long, ii As Long, x With Cells(1).CurrentRegion.Columns(1) a = .Value For i = 1 To UBound(a, 1) If a(i, 1) <> "" Then x = Split(a(i, 1), "・") If UBound(a, 2) < UBound(x) + 1 Then ReDim Preserve a(1 To UBound(a, 1), 1 To UBound(x) + 1) End If For ii = 0 To UBound(x) a(i, ii + 1) = x(ii) Next End If Next .Columns(2).Resize(, UBound(a, 2)).Value = a End With End Sub (seiya) 2017/10/09(月) 23:33
お礼が遅くなりまして申し訳ございません。
動作確認できました。これから一行ごとにその内容を確認させていただきます。
ありがとうございました。
(lion) 2017/10/10(火) 11:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.