- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (6)
- SI299792
- ベストアンサー率47% (774/1619)
「量」「率」は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をコピペ。
補足
うまく表にすることができました。ありがとうございます。フィルターをかけて、順列を入れ替えようとしたのですが、配列の一部を変更することはできませんというエラーが出ました。解決策は無いでしょうか?
- SI299792
- ベストアンサー率47% (774/1619)
>マイクロソフト365とは別のエクセルだと、こうなるって理解で宜しいでしょうか。 そうです。 >もし、表の①「量」と②「率」の番地が少し移動しても ・バージョンはMicrosoft365でいいですか。 ・移動の目的は何でしょうか❓ 例えば、データ数に変動がありうるなら、量は固定でいいと思います。(量の移動もありうるとすれば相当複雑な式になります) ・量と率は同じ項目(同じ件数)でいいですか❓ ・#DEV/0! があるという事は、数式が入っているのですか❓
補足
・365です! ・移動されていたとしても、対応できたら良いかなと思って質問しました。 ・量と率は同じです。 ・別のビックデータから持ってきた数式で求められた値になります。
- NuboChan
- ベストアンサー率47% (785/1650)
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
お礼
ありがとうございます。 インデックスが有効範囲にありません というエラーが出てしまいました。私には使いこなせないかもしれません。せっかくご回答いただいたのにも関わらず、すみません。
補足
ありがとうございます!V BAに入れてみて、確認致します!
- SI299792
- ベストアンサー率47% (774/1619)
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)
補足
ありがとうございます!確認致します。 ご回答頂いたとおり、別のシートへの出力が目的です。 もし、表の①「量」と②「率」の番地が少し移動しても、そのそれぞれの表を認識してシート2に出力できる関数や方法などはありますか?
- SI299792
- ベストアンサー率47% (774/1619)
左を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 行迄コピペ。
補足
マイクロソフト365とは別のエクセルだと、こうなるって理解で宜しいでしょうか。
- FattyBear
- ベストアンサー率33% (1532/4618)
左のシート名を仮に 左 とした場合 右のシートのセルD8に =左!B5 とすれば左シートの a が表示されます。 右のシートのセルE8に =左!D4 とすれば左シートの 重量 が表示されます。 同様に左シートの各セルのデーターを右のシートの対応するセルにあて はめればよいのでは。
補足
もし、これをマクロを使ってやる方法はありますか?
お礼