新規無料会員登録で1000名様に電子コミック1000円分が当たる!!

下のように三行ごとにあるセルを参照し、他のセルに一行ごとに表示する方法(関数、もしくはマクロなど)

  A B C D
1 あ     あ
2       い
3       
4 い


7 う


あるいはあるセルに入力されている数値を数式内の行、または列として指定する方法を探しています。

(たとえばA1に4、A2に3と入力されていたとき、B2でその数値を取得しC3の内容を表示する、といった感じです)

簡単そうなきがするのですが私の検索が悪いのか、見つけることが出来ませんでした。ご存知の方お願いします

このQ&Aに関連する最新のQ&A

A 回答 (4件)

  A B C D


1 あ 1   =INDIRECT("A" & B1,1)
2   4   =INDIRECT("A" & B2,1)
3   7   =INDIRECT("A" & B3,1)
4 い


7 う

こういう事かな?
    • good
    • 0
この回答へのお礼

まさにこれです!やっぱりエクセルの関数でありましたね。
ありがとうございました!

お礼日時:2008/08/08 09:22

D1: =IF(OFFSET(A$1,(ROW(A1)-1)*3,,)=0,"",OFFSET(A$1,(ROW(A1)-1)*3,,))




》 A1に4、A2に3と入力されていたとき、B2でその数値を取得しC3の内容を表示

C3 は D3 の間違いでは?
間違いでなければ、「その数値」と C3 の関係を説明ください。

この回答への補足

D3の間違いでしたすみません

補足日時:2008/08/08 09:25
    • good
    • 1

>他のセルに一行ごとに表示する方法


1行目、4行目、7行目・・・と表示する方法ですが
 =INDEX(A:A,(ROW(A1)*3)-2,1)
>あるいはあるセルに入力されている数値を数式内の行、または列として指定する方法
 一例ですが
 A1に4 A2に3 とあって 4行目の3列目を表示する方法
 =OFFSET(A1,A1-1,A2-1)
>B2でその数値を取得しC3の内容を表示する
の内容がよくわかりませんが?
    • good
    • 0
この回答へのお礼

INDEXでもできるのですね。
なかなか沢山方法があったんですね…
ありがとうございました!

お礼日時:2008/08/08 09:30

D1==OFFSET($A$1,ROW()*3-3,0)


または
D1=INDIRECT("A"&(ROW()*3-2))
※注意.参照するA列のセルが未入力の場合は0が表示されます。
それを避ける場合は
D1=IF(OFFSET($A$1,ROW()*3-3,0)="","",OFFSET($A$1,ROW()*3-3,0))
のようにIF文で制御する必要があります。
    • good
    • 0
この回答へのお礼

OFFSETとROWだけでできたんですね。
かんがえてもわかりませんでした…
INDIRECTという関数は今後も使えそうなのでしっかりと覚えたいです。
ありがとうございました!

お礼日時:2008/08/08 09:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで数行おきにデータを抽出

エクセルシートで、あるデータ膨大にを出しますよね。
それで、たとえば、三行ごと、四行ごととかであるデータを右の行もしくは左行に抜き出す操作をするにはどうしたらいいですか?
今は、フィルタと可視フィルタを駆使してやっているのですが、一発でバンと出すような方法があると思って・・・数式とかでありそうだなって思って。
教えてください。、

Aベストアンサー

=OFFSET(抽出したい列の一番初めのセルの絶対参照,(ROW(A1)-1)*行間隔,0)
又は
=INDEX(抽出したいセルの範囲の絶対参照,(ROW(A1)-1)*行間隔+1,1)

QEXCELで3行を一組にして結合する方法について

かなりの行があるテキストファイルをEXCELに読み込みます。
3行が1組になっているので、別のBというシートにその3行を連結した結果を書き出します。
(3行といっても1行には1セルしかありませんが・・・)
次に4行目~6行目が1組になっているので、上記と同様にBシートの2行目に連結した結果を書き出します。
これは、手で1行づつBシートに
=A1&A2&A3 、次の行に =A4&A5&A6

等と式を記載すれば希望のものが出来るのですが、場合によっては元の行が30,000行ほどあったりするので、それを全て手で入力していくには、根気と時間が必要になります。
この作業は、毎日発生する予定で、他の仕事もやらなくてはならないため、短時間にこれを実現できれば・・・と、思っていますが、何をどうすれば良いのかわからずにいます。

これを解決できる方法がありましたら、是非教えて頂けると助かります。
ちなみにEXCEL XP(OfficeXPに付属)のものです。
例えば、EXCELではなく、***というフリーのソフトならできます!というのも歓迎です。
すみませんが、宜しくお願いします。

かなりの行があるテキストファイルをEXCELに読み込みます。
3行が1組になっているので、別のBというシートにその3行を連結した結果を書き出します。
(3行といっても1行には1セルしかありませんが・・・)
次に4行目~6行目が1組になっているので、上記と同様にBシートの2行目に連結した結果を書き出します。
これは、手で1行づつBシートに
=A1&A2&A3 、次の行に =A4&A5&A6

等と式を記載すれば希望のものが出来るのですが、場合によっては元の行が30,000行ほどあったりするので、それを全て手で入力していくには...続きを読む

Aベストアンサー

こんばんは!
一例です。
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので
↓のコードをコピー&ペーストし、マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sheet1のデータは1行目からあるとします。

Sub test() 'この行から
Dim i As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名(Sheet1の部分)は適宜変更してください。
Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更
For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row Step 3
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = _
ws1.Cells(i, 1) & ws1.Cells(i + 1, 1) & ws1.Cells(i + 2, 1)
Next i
End Sub 'この行まで

お役に立てば良いのですが・・・m(__)m

こんばんは!
一例です。
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので
↓のコードをコピー&ペーストし、マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sheet1のデータは1行目からあるとします。

Sub test() 'この行から
Dim i As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名(Sheet1の部分)は適宜変更してください。
Set ws2 = Worksheets("sheet2") '←こちらのSheet名も...続きを読む

QExcelで2行を1行にまとめるには?

Excelで2行を1行にまとめる方法を教えてください。下の6行を2行にするには、どうしたらいいのでしょうか?
よろしくおねがいします。

Excel2003です。


A little knowledge is a dangerous thing.
(生兵法はけがのもと)
空白行
After a storm comes a calm.
(雨降って地固まる)
空白行


第1行:A little knowledge is a dangerous thing.(生兵法はけがのもと)
第2行:After a storm comes a calm.(雨降って地固まる)

Aベストアンサー

(データ)A1:A100
(1)A little knowledge is a dangerous thing.
(2)(生兵法はけがのもと)
(3)空白行
(4)After a storm comes a calm.
(5)(雨降って地固まる)
(6)空白行
(7)・・・・(略)
(8)・・・・
(9)・・・・
(関数式)E1に(B1でも良いが)
=INDEX($A$1:$A$100,(ROW()-1)*3+1,0)&INDEX($A$1:$A$100,(ROW()-1)*3+2,0)
E2以下最下行の1/3行まで複写する。
(結果)
(1)A little knowledge is a dangerous thing.(生兵法はけがのもと)
(2)After a storm comes a calm.(雨降って地固まる)
(3)以下略

QExcel 3列毎のセルを別の表に抽出したい。

A3,A6,A9,A(n+3)ごとの数値を同ページに別表を作り抽出したいのです。具体的にはA3の数値をF1,A6-F2,A9-F3,A(n+3)をFnに、自動的にコピー出来ますか、教えてください。

Aベストアンサー

F1セルに
=INDEX(A:A,ROW(A1)*3)

これを下方にコピーで行けると思います。

Qエクセルで連続データから、数個飛ばしのデータを抜き取る方法

  A  B
1 a1
2 a2
3 a3
4 a4
5 a5
・・・・・
のような表において、
Bの列にB1=a1、B2=a3、B3=a5
のような2個飛ばしのデータを連続で抜き取る方法はありますでしょうか。
A列が3000行ほどあり手打ち入力がしんどいです。
OFFSET関数を使ってもうまく連続コピーされません。
どなたかご教授願います。

Aベストアンサー

OFFSET関数利用でもよいが、INDEX関数のほうが普通かな。
=INDEX($A$1:$A$100,(ROW()-1)*2+1,1)
100はデータ数が多い場合はデータ行数に変える。
例データ A1:A5
a1
a2
a3
a4
a5
B1に上記。データ数の半数の行数を複写。
結果
a1
a3
a5

QExcelの連続データから数行おきのコピー

ExcelのSheet1に連続したデータが入っています。

Sheet2はSheet1の内容を参考にしてレイアウトを変えていますが、

Sheet1で入力してある項目を参照して表示したいです。

コピーには規則性があるので、Sheet2を2項目だけ入力した後、

オートフィルで、一発で全部コピーしたいです。

VBAではなく、Sheet2に書くべき関数のコードを教えてください。

よろしくお願い致します。


-------------------------------

連続したデータがSheet1に大量に入っています。


  A   B    C
1 北海道 札幌市 メロン
2 青森県 八戸市 りんご
3 岩手県 盛岡市 冷麺

以下、多数あり。



Sheet2に、

  A   B    C
1 北海道 札幌市 メロン
2
3
4
5 青森県 八戸市 りんご
6
7
8
9 ※ここから下をオートフィルのコピーで表示したい

Aベストアンサー

シート2のA2セルには(A1,A3セルでもよい)次の式を入力してC2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(MOD(ROW(A1),4)<>1,"",IF(INDEX(Sheet1!$A:$C,ROUNDUP(ROW(A1)/4,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$C,ROUNDUP(ROW(A1)/4,0),COLUMN(A1))))

上式では1つのデータに4行を使っているので4が入力されています。5行必要なら5に改めて使用すればよいでしょう。
なお、シート1でデータが2行目から下方になる場合には次のような式になります。

=IF(MOD(ROW(A1),4)<>1,"",IF(INDEX(Sheet1!$A:$C,ROUNDUP(ROW(A1)/4,0)+1,COLUMN(A1))="","",INDEX(Sheet1!$A:$C,ROUNDUP(ROW(A1)/4,0)+1,COLUMN(A1))))

+1が新たに追加されますね。

QEXCELで100行に1行ずつ抽出したい

現在卒業研究中でエクセルを使っています。
そこで分からない事があるんですが、約10万行のデータがある列から100行に1行ずつ抽出し、横に1000行の列を作りたいと思ってます。
抽出する行は[1,101,201...]や、[100,200,300]等、番号は問いません。ただランダムではなく、100行ずつ順番に並べたいです。

どなたか詳しい方いらっしゃいましたら、教えていただけないでしょうか?
よろしくお願いいたします。

Aベストアンサー

データがA列に 入っているなら
>横に1000行の列
仮にB列に抽出するとしたら

B1に
=INDEX(A:A,ROW()*100,)
この式を、下セルにドラッグ

式中の  ROW()*100 が 100、200,300行目のA列データを表示します。
101,201,301行目なら  ROW()*100+1
102,202,302行目なら  ROW()*100+2
にする。

Qエクセルで等間隔のセルの抽出

例えば、A1~A100にデータが入力されている状態で、A1,A11,A21というように等間隔のデータだけを列Bに空白のセルを作らず連続して抽出したいのですが、どうしたらよいでしょうか。
即ち、A1 → B1,A11 → B2、A21 → B3、・・・・

エクセル不慣れなもので、よろしくお願い致します。

Aベストアンサー

一例です。
■数式で抽出
 B1に=INDEX(A:A,(ROW(A1)-1)*10+1)を入力、下方向にコピー

■数式以外で抽出
 B1に#A1、B2に#A11を入力、A1:A2を選択して下方向にコピー、編集→置換で「#」を「=」に一括置換

Q別シートのセルを3つ飛ばしで引用したいです

初心者の為、説明不足になりましたらすいません。

Excel2007を使用しているのですが、別シートのセルを3つ飛ばしで引用したいのですが出来なくて困っています。

例えて言うと・・・

シート名:商品別

     列A   列B  列C

行1   商品1  単価  2000
行2       販売数 20
行3       売上  40000
行4   商品2 単価  1000
行5       販売数 10
行6       売上  10000
     ・
     ・
     ・


というシートの、売上の金額の部分だけ(例ではセルC3、C6・・・)別のシートに

シート名:売上一覧

     列A   列B

行1   商品1  40000
行2   商品2  10000
行3   商品3 25000
     ・
     ・
     ・
というように列Bに引用したいのですが、3つ飛びなのでオートフィルでは
=商品別!C3
=商品別!C4
=商品別!C5
・・・

となってしまいます(泣)
手入力で
=商品別!C3
=商品別!C6
=商品別!C9
・・・

と入力すればよいのですが、引用しなきゃいけない行が1000行あるし
他のシートでも同様の事をしなければいけないので、関数を使用して
入力する方法があったら教えて欲しいです☆

どうかお知恵を貸して下さい☆

よろしくお願いします☆

初心者の為、説明不足になりましたらすいません。

Excel2007を使用しているのですが、別シートのセルを3つ飛ばしで引用したいのですが出来なくて困っています。

例えて言うと・・・

シート名:商品別

     列A   列B  列C

行1   商品1  単価  2000
行2       販売数 20
行3       売上  40000
行4   商品2 単価  1000
行5       販売数 10
行6       売上  10000
     ・
     ・
     ・


というシートの、...続きを読む

Aベストアンサー

≪隣の列が空白あるいはデータが連続していない場合≫
B1に、=商品別!C3 と参照式を入力
参照式の頭に#を入力、#=商品別!C3
名前ボックスに、B1000 と入力
Shift+Enter でB1:B1000を選択
F2キーでアクティブセル(B1)を編集モードにする
Ctrl+Enter でB1:B1000に #=商品別!C3 が入力される
B2に、#=商品別!C6 と入力
B1:B2 を選択し、選択枠の右下角の■(フィルハンドル)をダブルクリック
#=商品別!C3
#=商品別!C6
#=商品別!C9



オートフィル範囲が選択状態のまま
編集メニューの「置換」で
#=

=
に「すべて置換」

Qエクセルで、別シートの2行おきのデータ参照するには?

下記のようなデータがシート1からシート2に取り出す場合の良い方法ありませんか?
データが少しなら、手入力で数式を入力が可能なのですが・・。
○行おきの合計などは、過去の質問であったのですがよろしくお願いします。

 シート1    シート2
   A      A
 1 あ    1 あ
 2 ア    2 い
 3 a    3 う
 4 い    4 ・
 5 イ    5 ・
 6 i
 7 う
 8 ウ
 9 u

Aベストアンサー

=OFFSET(Sheet1!$A$1,(ROW(A1)-1)*3,0)


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング