[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定文字で分割して書き出す』(ハイチ)
検索シートのA列に以下のDATAがある場合に
|[A] [1] |X:\ [2] |Y:\AA\あああ [3] |Y:\AA\あああ\いいい [4] |Y:\AA\あああ\ううう [5] |Y:\AA\あああ\えええ [6] |Y:\AA\あああ\おおおお [7] |Y:\AA\あああ\おおおお\かかかか)\くくく [8] |Y:\AA\あああ\おおおお\けけけ [9] |Y:\AA\あああ\おおおお\けけけ\こここ [10]|Y:\AA\あああ\おおおお\さささ
分割シートに下記のように\で区切って
別々の列に表示したい
|[A]|[B]|[C] |[D] |[E] [1]|X: | | | | [2]|Y: |AA |あああ | | [3]|Y: |AA |いいい | | [4]|Y: |AA |ううう | | [5]|Y: |AA |おおおお| | [6]|Y: |AA |おおおお|かかかか|くくく [7]|Y: |AA |おおおお|けけけ | [8]|Y: |AA |おおおお|けけけ |こここ [9]|Y: |AA |おおおお|さささ |
'-------------------------------
私案として以下のコードを候補に上げましたが
シートへの書き出しで上手く処理できません。
どのように修正すれば良いでしょうか ?
Sub 分割()
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Set sh1 = Worksheets("DATA")
Set sh2 = Worksheets("検索")
Set sh3 = Worksheets("分割")
'書き出しシートを初期化
sh3.cells.Clear
'ターゲットセルを分割
Dim i As Long
Dim ii As Long
Dim lc As Long
Dim S_Max As Long
Dim S As Variant '配列
lc = sh2.cells(sh2.Rows.Count, 1).End(xlUp).Row '処理総数
For i = 1 To lc
S = Split(sh2.cells(i, "A"), "\") '¥で要素に分割 S_Max = UBound(S) '要素の総数 For ii = 0 To S_Max sh3.cells(ii + 1, i) = S(ii) Next Next
End Sub
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
|[A]|[B]|[C] |[D] |[E] [1]|X: | | | | [2]|Y: |AA |あああ | | [3]|Y: |AA |いいい | | [4]|Y: |AA |ううう | | [5]|Y: |AA |おおおお| | [6]|Y: |AA |おおおお|かかかか|くくく [7]|Y: |AA |おおおお|けけけ | [8]|Y: |AA |おおおお|けけけ |こここ [9]|Y: |AA |おおおお|さささ |
実際は、下記のように書き出されます。
|[A]|[B] |[C] |[D] |[E] |[F] |[G] |[H] |[I] |[J] [1]|X: |Y: |Y: |Y: |Y: |Y: |Y: |Y: |Y: |Y: [2]| |AA |AA |AA |AA |AA |AA |AA |AA |AA [3]| |あああ|あああ|あああ|あああ|あああ |あああ |あああ |あああ |あああ [4]| | |いいい|ううう|えええ|おおおお|おおおお |おおおお|おおおお|おおおお [5]| | | | | | |かかかか)|けけけ |けけけ |さささ [6]| | | | | | |くくく | |こここ | (ハイチ) 2023/01/06(金) 08:36:20
Sub test() Dim sh2 As Worksheet, sh3 As Worksheet Dim i As Long, ii As Long, s Set sh2 = Worksheets("検索") Set sh3 = Worksheets("分割") For i = 1 To sh2.Cells(Rows.Count, 1).End(xlUp).Row s = Split(sh2.Cells(i, 1), "\") For ii = 0 To UBound(s) sh3.Cells(i, ii + 1) = s(ii) Next Next End Sub (フォーキー) 2023/01/06(金) 08:57:20
>列がずれている 行列が入れ替わっている、でした。 (フォーキー) 2023/01/06(金) 08:59:51
標準機能を利用できるとの事なので
手順を「マクロの記録」で記録して後でコードを見直す(改良、改正)する事にしました。
しかし、上手くいきません。
1.検索シートのA列(分割する文字列を含む列)をクリックして選択
2.[データ]、[区切り位置] の順に選択
3.[区切り位置指定ウィザード] で、[区切り表現付き]、[次へ] の順に選択
4.データの [区切り文字] を選択¥(ドルマーク)を指定
5.[次へ] を選択します。
1)-5)までは、上手く指定できていると思います。
6.分割データを表示するワークシートで [表示先] を選択。
ここ(ウイザード1/3)で表示先が悪いので
表示先の参照が正しくありません。
とエラーとなり受け付けてくれません。
分割シートのどこを「表示先」に指定したら良いのでしょうか?
’−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
とここまで記載していて
上記内容を書き出す前に08:57,08:59の2つの書き込みが有りました。
コードを見直して
2つのアドバイスでようやく理解できました。
以下のように変更して上手く処理できました。
今回も初歩的なミスに気が付かず、ごめんなさい。
For ii = 0 To S_Max
sh3.cells(i, ii + 1) = S(ii) Next (ハイチ) 2023/01/06(金) 09:12:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.