• ベストアンサー

エクセルの機能について

画像の左の二つの表のデータを、画像の右の通りに別のシートに出力する方法を後教示いただきたくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.7

関数で出した結果を、フィルターで並べ替えはできません。 ・コピーして、磔のオプション、値、で別の場所に張り付ける ・SORT又はSORTBY関数で並べ替える どちらかの方法で行います。

clarissuper999
質問者

お礼

=INDEX(Sheet1!B:B,SEQUENCE((COUNT(Sheet1!$D:$D)/2)*6,,0)/6+MATCH(F7,Sheet1!$B:$B,0)+3) 上の意味が理解できませんでした。色々ありがとうございました。

Powered by GRATICA

その他の回答 (6)

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.6

「量」「率」はB列に有る。その2行下か項目名、さらにその下にデータがある。という前提です。 D8: =INDEX(Sheet1!B:B,SEQUENCE((COUNT(Sheet1!$D:$D)/2)*6,,0)/6+MATCH(F7,Sheet1!$B:$B,0)+3) E8: =INDEX(OFFSET(Sheet1!D2:I2,MATCH(F7,Sheet1!$B:$B,0),),MOD(SEQUENCE(102,,0),6)+1) F8: =TOCOL(OFFSET(Sheet1!$D3:$I3,MATCH(F7,Sheet1!$B:$B,0),,COUNT(Sheet1!$D:$D)/2)) G8: F8をコピペ。

clarissuper999
質問者

補足

うまく表にすることができました。ありがとうございます。フィルターをかけて、順列を入れ替えようとしたのですが、配列の一部を変更することはできませんというエラーが出ました。解決策は無いでしょうか?

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.5

>マイクロソフト365とは別のエクセルだと、こうなるって理解で宜しいでしょうか。 そうです。 >もし、表の①「量」と②「率」の番地が少し移動しても ・バージョンはMicrosoft365でいいですか。 ・移動の目的は何でしょうか❓ 例えば、データ数に変動がありうるなら、量は固定でいいと思います。(量の移動もありうるとすれば相当複雑な式になります) ・量と率は同じ項目(同じ件数)でいいですか❓ ・#DEV/0! があるという事は、数式が入っているのですか❓

clarissuper999
質問者

補足

・365です! ・移動されていたとしても、対応できたら良いかなと思って質問しました。 ・量と率は同じです。 ・別のビックデータから持ってきた数式で求められた値になります。

  • NuboChan
  • ベストアンサー率47% (785/1650)
回答No.4

VBAを望むなら SI299792さんの関数をそのままおかりして コードにしてみました。 Sub ConvertFormulasToVBA() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet2") ' D8 ws.Range("D8").Formula = "=INDEX(Sheet1!B:B,ROW(D6)/6+4)" ' E8 ws.Range("E8").Formula = "=INDEX(Sheet1!$4:$4,MOD(ROW(E6),6)+4)" ' F8 ws.Range("F8").Formula = "=INDEX(Sheet1!D:I,ROW(F6)/6+4,MOD(ROW(F6),6)+1)" ' G8 ws.Range("G8").Formula = "=INDEX(Sheet1!D:I,ROW(G6)/6+25,MOD(ROW(G6),6)+1)" ' Copy down to row 109 ws.Range("D8:G8").AutoFill Destination:=ws.Range("D8:G109"), Type:=xlFillDefault End Sub

clarissuper999
質問者

お礼

ありがとうございます。 インデックスが有効範囲にありません というエラーが出てしまいました。私には使いこなせないかもしれません。せっかくご回答いただいたのにも関わらず、すみません。

clarissuper999
質問者

補足

ありがとうございます!V BAに入れてみて、確認致します!

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.3

MicroSoft365 D8: =INDEX(Sheet1!B:B,SEQUENCE(102,,0)/6+5) E8: =INDEX(Sheet1!$4:$4,MOD(SEQUENCE(102,,0),6)+4) F8: =TOCOL(Sheet1!D5:I21) G8: =TOCOL(Sheet1!D26:I42)

clarissuper999
質問者

補足

ありがとうございます!確認致します。 ご回答頂いたとおり、別のシートへの出力が目的です。 もし、表の①「量」と②「率」の番地が少し移動しても、そのそれぞれの表を認識してシート2に出力できる関数や方法などはありますか?

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.2

左をSheet1とします。 D8: =INDEX(Sheet1!B:B,ROW(D6)/6+4) E8: =INDEX(Sheet1!$4:$4,MOD(ROW(E6),6)+4) F8: =INDEX(Sheet1!D:I,ROW(F6)/6+4,MOD(ROW(F6),6)+1) G8: =INDEX(Sheet1!D:I,ROW(G6)/6+25,MOD(ROW(G6),6)+1) 109 行迄コピペ。

clarissuper999
質問者

補足

マイクロソフト365とは別のエクセルだと、こうなるって理解で宜しいでしょうか。

  • FattyBear
  • ベストアンサー率33% (1532/4618)
回答No.1

左のシート名を仮に 左 とした場合  右のシートのセルD8に =左!B5 とすれば左シートの a が表示されます。 右のシートのセルE8に =左!D4 とすれば左シートの 重量 が表示されます。 同様に左シートの各セルのデーターを右のシートの対応するセルにあて はめればよいのでは。

clarissuper999
質問者

補足

もし、これをマクロを使ってやる方法はありますか?

関連するQ&A