- ベストアンサー
Excelの関数
Excelの関数を教えて下さい。 「Sheet1」に入っている内容を「Sheet2」へ下記のように変更して表示させたいのですが、効率の良い関数が分かりません。 ※ちょっと表が波打ってますが…。 「Sheet1」 → 「Sheet2」 A B A 1 あ い 1 あ 2 う え 2 い 3 お か 3 う 4 き く 4 え 5 け こ 5 お ・ ・ ・ ・ ・ ・ 上には5行しか入力していませんが、実際の作業は20~25行あります。 説明がつたなくて申し訳ありませんが、宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 すみません、式中のシート名が違ってました(汗)。 =IF(MOD(ROW(),2)=0,OFFSET(Sheet1!$B$1,ROW()/2-1,0),OFFSET(Sheet1!$A$1,(ROW()+1)/2-1,0))
その他の回答 (6)
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法もありますよ ★Sheet2の式 A1=OFFSET(Sheet1!$A$1,INT((ROW(Sheet1!A1)-1)/2),MOD(ROW(Sheet1!A1)-1,2)) ★下にコピー
お礼
maron--5様 ご回答のお陰で作業時間が格段に短くなりました。 とても助かりました。 ご回答下さいまして、ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
VBA なら Sub test01() k = 1 For i = 1 To 100 For j = 1 To 2 Cells(k, "E") = Cells(i, j) k = k + 1 Next j Next i End Sub
お礼
imogasi様 VBAバージョンもご回答下さりありがとうございます。 VBAはよく分からないのですが、 コピー&ペーストしたらビビッと出来て感動しました。 ありがとうござました。
- imogasi
- ベストアンサー率27% (4737/17069)
例えばD列に =IF(ISODD(ROW()),INDEX($A$1:$B$100,(ROW()-1)/2+1,1),INDEX($A$1:$B$100,INT((ROW()-1)/2+1),2)) した方向に式を複写。 ISODD(ROW())は奇数列なら、の意味。 例データ A列 B列 D列 あ い あ う え い お か う え お か
お礼
imogasi様 ご回答ありがとうございます。 この関数ですと、同じシートに表示が出来るので修正の時にとても重宝します!! とても助かりました。
- mu2011
- ベストアンサー率38% (1910/4994)
シート2のA1に以下の数式を設定して下方向にコピーして下さい。 =OFFSET(sheet1!$A$1,INT((ROW()-1)/2),(MOD(ROW(),2)=0)*1)
お礼
補足に入力してしまいました。 mu2011様 ご回答下さいましてありがとうございます。 OFFSETの関数は使い方がわからないのですが、 こちらのご回答を参考にし応用できるようにしたいと思います。 大変参考になりました。
補足
mu2011様 ご回答下さいましてありがとうございます。 OFFSETの関数は使い方がわからないのですが、 こちらのご回答を参考にし応用できるようにしたいと思います。 大変参考になりました。
- guchi_yama
- ベストアンサー率47% (57/119)
別の方法で、 Sheet2のA1に =INDIRECT("Sheet1!"&"A"&(ROW()-1)/2+1) Sheet2のA2に =INDIRECT("Sheet1!"&"B"&ROW()/2) と入力し、そしてSheet2のA1,A2の2つのセルを囲んで、 下へオートフィルします。 これで、Sheet1のA列とB列が交互に表示されます。
お礼
guchi_yama様 この様なやりかたもあるのですね!! 助かりました。そして参考になりました。 ありがとうございました。
- nekoron07
- ベストアンサー率37% (69/184)
sheet2のA1のセルに =IF(MOD(ROW(),2)=0,OFFSET(Sheet2!$B$1,ROW()/2-1,0),OFFSET(Sheet2!$A$1,(ROW()+1)/2-1,0)) と入力して、下方向にコピー、で出来ました。
お礼
xkurox様 教えて下さったようにしたら無事出来ました。 とても助かりましたありがとうございました。