- ベストアンサー
エクセルでの列データ操作について
例として、A1からA1000まで数値データがあったとします。そこからA1のデータをB1にA5のデータをB2へA10のデータをB3といったようにA列のデータを3とか5といったように任意の数で等間隔のデータをB列に順に貼り付けたいのですが、何か良い方法がありますか?出来れば関数でまかなえれば大変助かります。 マクロに関しては知識が乏しいので厳しいです。ポイントとして、任意の等間隔(数式の中で数値を入れ替えれる)で間隔を変更出来る様にしたいです。 ご教授よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>A1のデータをB1に・・・ ←セルB1に「=B1」の数式を入力 OFFSET関数を使用してセルB2セルから下へ「=OFFSET($A$1,ROW(A1)*5,0,1)」の式を入れますが、この式ですとA列のセルが1000行以下未入力の場合、「0」を返してきますのでIF関数を使って以下の式をセルB2から下に入れます =IF(OFFSET($A$1,ROW(A1)*5,0,1)=0,"",OFFSET($A$1,ROW(A1)*5,0,1)) ↑この数式をコピーしてB2に貼り付け、後は必要な行数分だけ数式のコピーをします 「ROW(A1)*5」←この部分の5は5行分を意味しますので3行おきにセル番地を返したい場合は「ROW(A1)*3」と数式内の数値の部分(IF関数を使ってますので2箇所)を編集します もう少し簡単な方法として空きセル(例えばD2セルなど・・・)間隔を開けたい分の数値を入力しておいて次の式をB2以下に入れます =IF(OFFSET($A$1,ROW(A1)*$D$2,0,1)=0,"",OFFSET($A$1,ROW(A1)*$D$2,0,1))の式を使い、セルD2に行数分の数値を手入力します(例えば3とか5とか7とか・・・) 「3」と入力すると3行間隔の数値を返します 「5」と入力すると5行間隔の数値を返してきます
その他の回答 (5)
- keithin
- ベストアンサー率66% (5278/7941)
んーと? >A列のA1、A6、A11のような等間隔の数値データをA1はB1にA6はB2にA11はB3にといった感じです。 >その等間隔は後で数値を入れ替える事でA列の必要な間隔を変更できるようにしたいのです。よろしくお願いします。 それは補足にあらず最初のご質問で書かれて内容の繰り返しなので,それならANo.1で回答したまんまのやり方で出来ます。 実際に手を動かしてエクセル上に実施してみての「よろしく」なのですか? もう一度お話ししますので,次の通りに今度は実際に手を動かして試してみてください。 B1セルに,ANo.1で回答した式を入れます。 B1セルを下向けにオートフィルドラッグでコピーします。 E1セルに,必要な間隔の数字を記入します。 E1セルを使いたくないときは =INDEX(A:A,(ROW(B1)-1)*$E$1+1) のE1の所に3や5を入れて =INDEX(A:A,(ROW(B1)-1)*5+1) のようにして,オートフィルドラッグします。 良く読んで気をつけて欲しかったのは,結果の式を「B1」じゃなく例えば「C2から下に配置したい」とか,元のデータ並びが「A1開始」じゃなく実は「A2開始」だった場合は,回答の通りの式では出来ないので調整が必要だと言うことです。 #念のため補足 「A1」の次が「A5」で次が「A10」では『等間隔』では無いというのは,単なるご相談の書き間違いとしてスルーしました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>等間隔というのはA列のセルが等間隔ということですが(データはA1からA1000くらいまであります)、上記数式でよいでしょうか? ご希望のデータが表示できる数式を提示しています。 例えばD1セルに間隔(例えば5)、F1セルに開始行番号(例えば1)が入力されているなら、以下のような式になります。 =INDIRECT("A"&ROW(A1)*$D$1-$D$1+$F$1) 実際にセルに入力して下方向にオートフィルコピーしてみてください。 データがない部分は「0」と表示されますので、これを表示したくないならIF関数で空白表示するか、返す値が文字列なら以下のように数式の後に「&""」を付けてください。 =IF(元の式=0,"",元の式) =INDIRECT("A"&ROW(A1)*5-4)&""
- MackyNo1
- ベストアンサー率53% (1521/2850)
>A列のA1、A6、A11のような等間隔の数値データをA1はB1にA6はB2にA11はB3にといった感じです。 その等間隔は後で数値を入れ替える事でA列の必要な間隔を変更できるようにしたいのです。 A列の特定のセルから一定間隔でデータを表示したいならINDIRECT関数を使う以下の式がわかりよいかもしれません。 =INDIRECT("A"&ROW(A1)*5-4) 上記の数式の「5」が間隔で、「-4」の部分はA列の一番上のセル位置を調整する数字で、A1セルなら「5-4」ですので「-4」となりA10セルが開始位置なら「5+5」で「+5」になります。
- MackyNo1
- ベストアンサー率53% (1521/2850)
ROW関数を組み合わせればいろいろな数式ができますが、最も直感的でわかりよい操作は、B1セルに「'=A1」B2セルに「'=A5」と1つ目のセルと2つ目のセルを参照する数式を最初に「’」を付けて入力し、この2つのセルをオートフィルコピーして、最後にこの列を選択して「データ」「区切り位置」で「完了」します。 あるいはB1セルに「=A1」と入力し、A1:A4セルを選択して下方向にオートフィルコピーしてご希望の数式を飛びとびに入力しておき、Ctrl+Gのショートカットでジャンプダイアログを出し、「セル選択」から「空白セル」にチェックを入れ、そのまま右クリックから「削除」で「上方向にシフト」する方法も簡単かもしれません。
- keithin
- ベストアンサー率66% (5278/7941)
INDEX,INDIRECT,OFFSETなどの関数とROW関数を組み合わせて,大概の事ができます。 計算例: E1セルに3とか5とかを入れて(勿論数式中に直接数字を記入して作成しても良い) B1: =INDEX(A:A,(ROW(B1)-1)*$E$1+1) を下にコピー 実際には >そこからA1のデータをB1に 「どこ番地のセルの値」を「どこのセルに書き出させたい」のかによって,細かい数式のチューニングが変わります。皆さんから教わった式の計算手順を追えなかった時は,正確に今実際にあなたがやりたい「どこのセルにどこのセルを」の正しい情報を添えて改めてご相談を投稿し直してください。
補足
お世話になります。追記します。A列のA1、A6、A11のような等間隔の数値データをA1はB1にA6はB2にA11はB3にといった感じです。 その等間隔は後で数値を入れ替える事でA列の必要な間隔を変更できるようにしたいのです。よろしくお願いします。
補足
私の理解不足もあるかと思いますが、等間隔というのはA列のセルが等間隔ということですが(データはA1からA1000くらいまであります)、上記数式でよいでしょうか?あと、上記数式はオートフィルでB1セルからB2 B3と連続で貼り付けは出来るのでしょうか?A列のデータが1000程度ありますので、オートフィルが使えないと大変かと。。 あとで数値を入れ替えるというのは、A列の取り出したいセルの間隔の事です。例えば3の倍数のみとか5の倍数のセルとかですが、足し算で1 6 11 16番目のセルデータの取り出し等等。 何度も申し訳ありません。 お礼が明日になったらすみません。