[[20180603224044]] 『1列のデータを特定の文字を含むセルで複数列に並ax(まこと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『1列のデータを特定の文字を含むセルで複数列に並べなおし』(まこと)

お世話になります。
下記のように縦1列に並んだデータが5000行くらいありまして、特定の文字を含む(この場合は「県」)を含むセルで、折り返して横へ並べていきたいです。
どのようにすればよろしいでしょうか?

(変換前)
青森県
かきくけこ
さしすせそ
たちつてと
岩手県
さしすせそ
たちつてと
宮城県
あかさたな
・・・・

(変換後)
青森県   岩手県    宮城県    XX県
かきくけこ さしすせそ  あかさたな  ・・・・
さしすせそ たちつてと  ・・・
たちつてと

< 使用 Excel:unknown、使用 OS:unknown >


マクロであればだいたいの処理は思いつくけど、数式でやる方法は考えればありそうな気もするけど、ぱっと思いつかないですね。

とりあえず、数式、マクロどちらで進めたいのか。
マクロであればどの程度までは理解できるのか。
数式であれば、バージョンによっては使えないものもあるいので、少なくともエクセルのバージョンを書き込む

などの処置をすると回答が付くような気がします。

ちなみに例示のものでいえば、「県」で終わるものが項目名ってことですよね?
(もこな2) 2018/06/03(日) 23:13


 変換前がSheet1、変換後がSheet2とし、返還前のデータはA列にあるとする。
 まずSheet2のA1セルに
 =IFERROR(INDEX(Sheet1!$A$1:$A$5000,MATCH(COLUMN(A1),INDEX(COUNTIF(INDIRECT("Sheet1!A1:A"&ROW($1:$5000)),"*県"),0),0)),"")
 と入力して横へフィルコピーする。
(ねむねむ) 2018/06/04(月) 10:29

 次にSheet2のA2セルに
 =IFERROR(IF(OR(A1="",COUNTIF(INDEX(Sheet1!$A:$A,MATCH(A$1,Sheet1!$A:$A,0)+ROW(A1)),"*県")),"",INDEX(Sheet1!$A:$A,MATCH(A$1,Sheet1!$A:$A,0)+ROW(A1))),"")&""
 と入力して右及び下へフィルコピーしてみてくれ。
(ねむねむ) 2018/06/04(月) 10:30

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.