
INDIRECT("'"&$A$2&"'!I2")
=INDIRECT("'"&$A$2&"'!I"&ROW(A2))
=INDIRECT(ADDRESS(ROW(I2),COLUMN(I2),,,$A$2)) だと縦、横どちらにも対応するか。
以上のように、お教え頂いたものをオートフィルできました。しかし、これを横にしてしたいと
思いやってみますが、どうしてもうまくできません。データは下記に示します。
I J K L M
4 13 6 7 12 9 10
4 14 14 15 20 17 18
4 15 22 23 28 25 26
4 16 30 31 36 33 34
4 17 38 39 44 41 42
このように、=INDIRECT(ADDRESS(ROW(I2),COLUMN(I2),,,$A$2)) で抽出しました。
縦の I6~38を横にしたい。その他のところも J7~39・K12~44・L9~41・
M10~42も同じように縦を横に長く表示したい。また、抽出する別シートの元データは
上記のような配列になっている。この他に70ページほどのデータがあるので、関数か
マクロでどうにかなりませんか。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
ご質問の内容が概ね明確になったので、数式を考えてみました。
表示用シートのC2セルに
=INDIRECT(ADDRESS(MOD(COLUMN(A1)-1,6)+2,INT((COLUMN(A1)-1)/6)+9,,,$A2))
という数式を記述し、下方向、右方向へオートフィルすれば、ご質問者のご希望に沿った結果になるのではないかと思います。
表示用シートC2は元シートのI2に対応するので元シートの「2行目かつ9列目」に対応することになります。
表示セルがC2から右方向へ1つ進むと、元シートのセルは下方向へ1つ進み、行数は「2、3、4、5、6、7」を繰返すことになります。
つまり、2~7を繰返す数式を作ればよいので、
MOD(COLUMN(A1)-1,6)+2
という数式を作成し、元シートの行数を算出したうえで、ADDRESS関数の行数としています。
さらに、元シートのデータは6個ワンブロックで、表示用シートにC2から右にデータが6個表示されると、元シートの次の列に進みます。
I2の列数は「9」で、初期値は「9」ですから、6データ毎に9から1つづつ増える数式を作ればよいので、
INT((COLUMN(A1)-1)/6)+9
という数式を作成し、元シートの列数を算出したうえで、ADDRESS関数の列数としています。
この数式は「表示用シートの表示位置のセルの列数が元シートの行数と列数に対応する」という点に着目したものです。
できあがりました。こんなに、ご親切且つご丁寧にご教授頂いたのは初めてです。お人柄に感じ入っている次第です。誠にありがとうございました。色々と試行錯誤してもうまく行かず、自分の不勉強さを痛感しています。お気に障りましたら申し訳ありません、どんな勉強をしたらよいのか、お教え下さいませんか、よろしくお願いします。また、今後ともよろしくお願いします。幾重にもお礼申し上げます。
No.2
- 回答日時:
No.1です。
ご質問者の補足コメントの意味が理解できません。
その理由は元の表の内容を承知していないからです。
今回のご質問では元の表の内容については一切説明がなく、全くわかりません。
No.1の回答は「私の推測」に基づくものです。
普通なら複数の回答がつくであろう、このサイトの質問に私の回答しかついていないのはご質問の内容が把握できないからだと思います。
>=INDIRECT(ADDRESS(COLUMN($B$9),ROW($B$9),,,$A2))
>検索値を$A3~$A50にしたオートフィルでできます。
COLUMN($B$9),ROW($B$9)という表記は「絶対参照」であり、参照セルを固定したい場面で使用するものです。
ご質問者の場合、縦、横にオートフィルを使って元シートのデータを反映させる狙いだと推測していますので、参照セルを固定したら「元シートの一つのセルがオートフィル全体に表示されるだけ」ということになります。
それなのに、「$A3~$A50にしたオートフィルでできます」とおっしゃており、何ができているのかわかりません。
また、検索値とは何のことですか?上記の数式に検索値はありませんが・・・
数式末尾の,,,$A2のことをおっしゃっているなら「検索値」ではなく「シート名」の参照セルです。
>縦のデータj~M列も横にする場合は、その都度(COLUMN(B9),ROW(B9)
>の値を変更しなければ、行へのオートフィルが使えません。
そもそものご質問は
>縦のI6~38を横にしたい。その他のところも
>J7~39・K12~44・L9~41・M10~42も同じように縦を横に長く表示したい。
つまり、補足説明にある
>縦のデータj~M列も横にする場合は、
を想定して回答したものです。
それなのに、
>その都度(COLUMN(B9),ROW(B9)の値を
>変更しなければ、行へのオートフィルが使えません。
とおっしゃっており、回答者さんが何をやっているのかが不明です。
まず、お尋ねしたいのは以下の4点です。
(1)「=INDIRECT(ADDRESS(ROW(I2),COLUMN(I2),,,$A$2)) だと縦、横どちらにも対応するか。」という別シートから転記する数式の回答を得たようですが、上記数式は元シートの「どのセル」を表示用シートの「どのセル」に転記するという回答なのでしょうか?
また、この回答を得たご質問自体はどのサイトにあるのですか?URLを教えてください。
(2)ご質問で説明されているI列~M列の内容の左にある、縦に並んだ5個の「4」、「13~17」の数字はなにを意味しているのですか?
また、これはセルに表示されているものなのですか?
(3)ご質問で説明されている表の内容は「元の表の内容」なのか、「関数を使って表示させた結果」なのかどちらでしょうか?
(4)補足コメントにある
>4 別シートにある縦行のデータを横列に変更する。
>5 別シートにある縦行のデータを横列に変更する。
>6 別シートにある縦行のデータを横列に変更する。
>・
>・
>50
>こんな感じです。
とのご要望ですが、上記の説明で理解できる人はいないと思います。
頭にある数字は何を意味しているのですか?縦行のデータは「別シート」の「どこに」あり、横列に表示するのは表示用シートの「どこに」表示するのですか?
No.1
- 回答日時:
行番号と列番号を入れ換えるだけです。
元の数式、=INDIRECT(ADDRESS(ROW(I2),COLUMN(I2),,,$A$2)) は、
=INDIRECT(ADDRESS(ROW(2:2),COLUMN(I:I),,,$A$2))
と記述することもできます。
つまり、「2行目かつ9列目のセル」を意味しています。
これを「COLUMN関数」で「2【行】目」、「ROW関数」で「9【列】目」を指定すればよい訳ですから、
=INDIRECT(ADDRESS(COLUMN(B:B),ROW(9:9),,,$A$2))
となります。これを元の数式と同じ表記にすると
=INDIRECT(ADDRESS(COLUMN(B9),ROW(B9),,,$A$2))
となります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) Excel この式はどんな意味でしょうか。。。 4 2023/01/14 22:30
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) エクセルの関数 2 2023/01/17 15:24
- Excel(エクセル) エクセルでのINDIRECT関数の使い方について 3 2022/08/22 07:38
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
画像の貼り付けかたがわかりま...
-
Perl(Windows)の文法について
-
openした後、closeしないでプロ...
-
pythonの作業ディレクトリに変...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
openした後、closeしないでプロ...
-
Perlのエラーについてご教授く...
-
テキストファイルで提出とは?
-
perlプログラミング 空白行削除
-
Strawberry Perl for Windows ...
-
Windows10においての『Perl』の...
-
LinuxにおいてのPerlのプログラ...
-
perlのrequireの動き方について...
-
perlをバージョンアップしたら...
-
bashスクリプト
-
TeraPadエディターの操作方法に...
-
#!/usr/bin/perlで書きだしたCG...
-
Windows版のPerlについて
-
アルファベットに付いて質問し...
-
perl このテキストファイルを簡...
-
Wallpaper Engineでおすすめの...
-
perlで文字の置換又は抽出に関...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
おすすめ情報
=INDIRECT(ADDRESS(COLUMN(B9),ROW(B9),,,$A$2))でできました。ありがとうございます。
=INDIRECT(ADDRESS(COLUMN($B$9),ROW($B$9),,,$A2))検索値を$A3~$A50にしたオート
フィルでできます。縦のデータj~M列も横にする場合は、その都度(COLUMN(B9),ROW(B9)の値を
変更しなければ、行へのオートフィルが使えません。これでできているので、5つ程度の変更なのでそれでもいいのですが、そのことまでは難しいですか。すいません、我が儘なことを言っているようで、
心苦しいのですが、よかったら教えて頂けますか。
4 別シートにある縦行のデータを横列に変更する。
5 別シートにある縦行のデータを横列に変更する。
6 別シートにある縦行のデータを横列に変更する。
・
・
50
こんな感じです。
I J K L M N
6 7 12 9 10 11
14 15 20 17 18 19
22 23 28 25 26 27
30 31 36 33 34 35
38 39 44 41 42 43
46 47 52 49 50 51
4 シート
I J K L M N
3 4 5 6 7 8
81 82 83 84 85 86
22 23 35 25 26 27
30 31 32 33 34 35
38 39 40 41 42 43
46 47 48 49 50 51
5 シート
I J K L M N
11 7 8 9 10 1
19 15 16 17 18 2
27 23 24 25 26 3
6 シートの一部
上記のExcelの「4というシート」から「6というシート」までを示しました。このシートから縦のデータを横のデータにする関数です。集計シートの一部を画像で示しました。
C2=INDIRECT(ADDRESS(COLUMN(B9),ROW(B9),,,$A2))にこの関数が入っていてD2~H2にオートフィルで(COLUMN(B9),ROW(B9)この部分を下記のように変更して入っています。D2~H2のB~Gの値は変えずに9の値を10~30まで変更、横にいっきにオートフィルで変更するようにはできないでしょうか。現在C2~H2まで(ひとかたまり)COLUMN・ROW関数のところに変更した関数が入っています。当然、2行目が全て完成すれば、下の行にオートフィルすることにしたいのです。
例えば(変更例)
列行
C2・・・(COLUMN(B9),ROW(B9)・・・
D2・・・(COLUMN(C9),ROW(C9)・・・
E2・・・(COLUMN(D9),ROW(D9)・・・
F2・・・(COLUMN(E9),ROW(E9)・・・
G2・・・(COLUMN(F9),ROW(F9)・・・
H2・・・(COLUMN(G9),ROW(G9)・・・
I2・・・(COLUMN(B10),ROW(B10)・・・
J2・・・(COLUMN(C10),ROW(C10)・・・
K2・・・(COLUMN(D10),ROW(D10)・・・
L2・・・(COLUMN(E10),ROW(E10)・・・M2・・・(COLUMN(F10),ROW(F10)・
N2・・・(COLUMN(G10),ROW(G10)・ NZ2・(COLUMN(G30),ROW(G30)
いくつか、また補足さましたがどうでしょうか。わかりにくくてすみません、初心者で大変
申し訳ありません。最初から、もっと全てのデータを示すべきでした。迷惑かけてすみません。
よろしくお願いします。最初の質問と異なったものとなり申し訳ありません。