dポイントプレゼントキャンペーン実施中!

エクセルでデータを整理するために、かなり巨大な表を
作成する作業をしています。(200列×10,000行くらい)

そしてその表の一部のセルを、飛び飛びにピックアップ
して参照し、別の小さな表にまとめたいと考えています。

こんな感じ。
  ↓
【巨大な表】各四角形がひとつのセルと思ってください。
□□□□□□□□□□□□□□□□□□□
□□□壱□□□弐□□□参□□□四□□□
□□□□□□□□□□□□□□□□□□□
□□□赤□□□青□□□黄□□□緑□□□
□□□□□□□□□□□□□□□□□□□
□□□東□□□西□□□南□□□北□□□
□□□□□□□□□□□□□□□□□□□
  ↓
 参照
  ↓
【小さな表】
 壱赤東
 弐青西
 参黄南
 四緑北

上のイメージ図でわかっていただけるでしょうか。
参照したいセルは規則的に並んでいるのですが、
連続してはいません。
小さい表にまとめるときは、行と列の位置関係を
入れ替えたいと思います。

セルの数が数十個程度なら、どうってこともない
作業ですが、参照したいセルの数が、数千個の
オーダーに達しています。

手作業で参照先を指定していたのでは、とても
終わりません。

なんとか効率的に行なう方法はないものでしょうか?
参照のための数式を自動生成するとか。

A 回答 (6件)

こんにちは。

maruru01です。

小さな表の左上のセルに、

=OFFSET($D$2,(COLUMN(A1)-1)*2,(ROW(A1)-1)*3)

と入力して、右へ下へコピーします。
数式中の「$D$2」は、巨大な表の抽出するデータの左上のセルです。
(「壱」と入力されているセルを絶対参照で)
数式中の「*2」は縦に2行ごとという意味です。
(「壱」「赤」「東」が2行ごとにあるということです。)
数式中の「*3」は横に3列ごとという意味です。
(「壱」「弐」「参」「四」が3列ごとにあるということです。)
なお、小さな表の左上がどのセルであっても、数式中のCOLUMN関数とROW関数の引数は、必ず「A1」(相対参照)にして下さい。
    • good
    • 0
この回答へのお礼

とてもよくわかりました。

おかげさまで、望みどおりの結果を得ることができました。応用が利く方法なので助かります。

お礼日時:2004/02/21 01:43

下記のロジックを会得して、チューニングしてください。


会得すれば簡単です。たった8行です。
VBEの標準モジュールにコピペして実行(F5キー)
Sub test02()
k = 9: l = 1
For i = 2 To 8 Step 2
k = k + 1 : l = 1
For j = 2 To 8 Step 3
Cells(k, l) = Cells(i, j)
l = l + 1
Next j
Next i
End Sub
(テストデータ)
A1:H8に8x8の1から64の数字を入れる。オートフィル
利用。
(実行結果)
A10:C13に
101316
262932
424548
586164
が出来ます。
(本番で変えるところ)
選択するセルについて
スタート行と列のi = 2 ・・・、j = 2の部分
飛びの度合いの Step XX の部分
終り行と列の To YY の部分
抽出するセル場所K=9のところ、。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2004/02/21 01:48

> 参照


>  ↓
>【小さな表】
> 壱赤東

この↑「壱赤東」というのは、1つのセルに入れるのですか?
「参照」となっていることから、そうではなく1つずつのセルだと思いますが、
もし、そうだとすると、1万行あるデータを1行飛び飛びで、行列を入換えて
「小さな表?」を作るとすれば、5千「列」が必要になると思いますが・・・?

シートを分けたとしても20シート位必要と思いますが・・・

VBAで処理した方がいいのかな? と思ったのですが、「参照」とあったので
「大きな表」のデータを修正したとき、即「小さな表」に反映させる必要が
あるのでしょうか。 まぁ、VBAでも出来なくはないですが・・・

解釈が違っているのでしょうか?

この回答への補足

書き込みありがとうございます。

質問の図で、1行おきに参照先データを置いたのはイメージです。

実際にはもう少し複雑ですし、アウトプットの方は複数の表に分けて出力することを考えています。

補足日時:2004/02/21 01:45
    • good
    • 0

ANo.#3です。


下記のショートカット操作はできないかもしれません。

GS1から下に


と入力し、この2つをコピーしてからCtrl+Shift+下矢印キーを押します。

ですので
「と入力し、この2つをコピーしてから下まで貼り付けます」に訂正させていただきます。
    • good
    • 0

力仕事ですが、いいでしょうか。


2行ごと、4列ごとに目的のセルがあるとします。

☆オートフィルタで行を詰める

GS1から下に


と入力し、この2つをコピーしてからCtrl+Shift+下矢印キーを押します。
で、Ctrl+Vで貼り付けます。

データ→フィルタ→オートフィルタでGS列を「2」で絞り込みます。

表の中のセルを一つだけ選択してCtrl+Shift+:(けのキー)を押しますと表全体が選択されます。

ここでAlt+;(れのキーです)を押し、
Ctrl+Cでコピーし、別なシートにCtrl+Vで貼り付けます。
いらない1行目は削除します。

☆区切り位置で列を詰める

GS1に次の数式を入力します。
=D1&","&H1&","&L1&","&P1&","&T1&","&X1&","&AB1&","&AF1&","&AJ1&","&AN1&","&AR1&","& AV1&","&AZ1&","& BD1&","& BH1&","& BL1&","& BP1&","& BT1 &","&BX1&","& CB1&","& CF1&","& CJ1&","& CN1&","& CR1&","& CV1&","& CZ1&","& DD1&","& DH1&","& DL1&","& DP1&","& DT1&","& DX1&","& EB1 &","& EF1&","& EJ1&","& EN1&","& ER1 &","& EV1&","& EZ1&","& FD1&","& FH1&","& FL1 &","& FP1&","& FT1&","& FX1 &","& GB1&","& GF1&","& GJ1&","& GN1&","& GR1
これを数式バーに貼り付けてください。

GS1をコピーします。
GS2から下に貼り付けます。

GS列を選択してコピー、
別なシートに形式を選択して貼り付けで値をオンにして貼り付けます。

A列を選択してデータ→区切り位置→カンマやタブなどの・・・をオンにして次へ→カンマにチェックを入れて完了

VBAが使えればこんなのは簡単なんですけれどね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2004/02/21 01:43

新しいシートのB1から横にD,H,L,P...とします。


A2から下に2,4,6,8...とします。
B2に=INDIRECT("Sheet1!"&B$1&$A2) と入力してコピーしてください。
 DHLP
2壱弐参四
4赤青黄緑
6東西南北
の状態になります。
これをコピーして値として行列を入れ替えて貼り付けしてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2004/02/21 01:41

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