人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルに関してです。

sheet1に、

AAAAAAA,A,B,C,D,E,1,2,3,4,5
BBBBBBB,A,B,C,D,E,1,2,3,4,5
CCCCCCC,A,B,C,D,E,1,2,3,4,5



があったとします。

・AAAAAAAは、任意の文字列
・A,B,C,D,Eは、任意の文字列だが、必ず、5つのセルに分かれている(空欄の場合もある)
・1,2,3,4,5は、任意の文字列だが、必ず、5つのセルに分かれている(空欄の場合もある)

これを

sheet2に

AAAAAAA-A,1
AAAAAAA-A,2
AAAAAAA-A,3
AAAAAAA-A,4
AAAAAAA-A,5
AAAAAAA-B,1
AAAAAAA-B,2
AAAAAAA-B,3
AAAAAAA-B,4
AAAAAAA-B,5
AAAAAAA-C,1
AAAAAAA-C,2
AAAAAAA-C,3
AAAAAAA-C,4
AAAAAAA-C,5
AAAAAAA-D,1
AAAAAAA-D,2
AAAAAAA-D,3
AAAAAAA-D,4
AAAAAAA-D,5
AAAAAAA-E,1
AAAAAAA-E,2
AAAAAAA-E,3
AAAAAAA-E,4
AAAAAAA-E,5
BBBBBBB-A,1
BBBBBBB-A,2
BBBBBBB-A,3
BBBBBBB-A,4
BBBBBBB-A,5
BBBBBBB-B,1
BBBBBBB-B,2



のように、連番の後にハイフンをつけた後にA,B,C,D,Eを。
そして、次のセルに1,2,3,4,5を入れる関数をお教えください。
一番最初に作ってくださった方にはイルカ賞を進呈いたします。
よろしくお願いいたします。

●質問者: martytaka
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:AA- イルカ賞 エクセル セル 文字列
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●27ポイント ベストアンサー

Sheet2のA1に

=INDIRECT("Sheet1!A" & INT((ROW()-1)/25)+1) & "-" &
INDEX(INDIRECT("Sheet1!B" & INT((ROW()-1)/25)+1 & ":F" & INT((ROW()-1)/25)+1), MOD(ROW()-1,5)+1)

長いので2行に書いてますが1行です。


Sheet2のB1に

=INDEX(INDIRECT("Sheet1!G" & INT((ROW()-1)/25)+1 & ":K" & INT((ROW()-1)/25)+1), MOD(ROW()-1,5)+1)

あとは下方向コピー


http://q.hatena.ne.jp/ダミー


2 ● kaiton
●27ポイント

回答がかぶるかもしれませんが、できたので..


Sheet1も2もA1セルからデータがあるものとします。

Sheet2のA1に

=INDIRECT("Sheet1!A"&INT((ROW()+24)/25))&"-"&OFFSET(Sheet1!$B$1,INT(((ROW()+24)/25)-1),MOD(INT(((ROW()+24)/5)),5))&","&OFFSET(Sheet1!$G$1,INT(((ROW()+24)/25)-1),MOD((ROW()+4),5))

これを下にコピーします。


空欄の場合の処理が明記されていなかったので、関係なく5行ずつ作成するようにしています。

空欄の場合は「AAAAA-,」のようなデータになるので、「-,」でオートフィルターして削除した方が速いかもしれません。


INDORECT関数、OFFSET関数は 以下の説明を参照下さい。

http://www.relief.jp/itnote/archives/001697.php

http://officetanaka.net/excel/function/function/offset.htm


3 ● 考え中
●26ポイント

もっと簡単な方法があると思いますが、力技で作ってみました。

配列数式など?

試してみて下さい

=CONCATENATE(INDIRECT("Sheet1!A"&TEXT(INT((ROW()+24.5)/25),"0")),"-",INDIRECT("Sheet1!"&CHOOSE(IF(MOD(ROW(),25)=0,5,INT((MOD(ROW(),25)+4.5)/5)),"B","C","D","E","F")&TEXT(INT((ROW()+24.5)/25),"0")),",",INDIRECT("Sheet1!"&CHOOSE(IF(MOD(ROW(),5)=0,5,MOD(ROW(),5)),"G","H","I","J","K")&TEXT(INT((ROW()+24.5)/25),"0")))

もしもっとスマートなのが出来たらまた書きます。

http://blog.livedoor.jp/gha10771/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ