解決済み

関数のどこを書き換えれば実現できるのでしょうか

  • すぐに回答を!
  • 質問No.9477582
  • 閲覧数212
  • ありがとう数3
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 39% (25/64)

以前に"質問ITmedia"でChiquilinさまという回答者の方から以下の関数を教えて頂ことがあります。
当時、短時間でこれだけの関数を書いて頂き本当に助かったのですが小さな問題が解決できず、何度か見様見真似でトライしてみたのですが、実現できず、この度質問させていただきました。
-------------Chiquilinさまから教えて頂いたスクリプト--------------
=QUERY({ARRAYFORMULA(ROW('Sheet1'!A2:K)),'Sheet1'!A2:K},"select Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10, Col11, Col12 where Col2 Is Not Null and Col1 + 19 > " &COUNTA('Sheet1'!A2:A) &" order by Col2 desc, Col1 desc")
-------------Chiquilinさまから教えて頂いたスクリプト--------------

現在、この関数の処理方法で問題を抱えています。この関数は、
Sheet1のA2:Kにあるデータをコピーして一番下のデータから10行分をコピーして、コピーした下の行のデータから順番に、このスクリプトがあるシートのA2:Kに張り付けなさいという関数です。
結果、以下のようになります(Sheet1→Sheet2)。

■Sheet1
1行目
2行目
3行目
4行目
5行目
6行目
7行目
8行目
9行目
10行目

ARRAYFORMULA関数で以下のように処理されます。

■Sheet2
10行目
9行目
8行目
7行目
6行目
5行目
4行目
3行目
2行目
1行目

下記のようにさせたいのですが、どのようにARRAYFORMULA関数を書き換えれば下記のようにコピーさせることができるでしょうか?
それとも、もう一度0からスクリプトを書き直す必要があるのでしょうか。

■Sheet2
9行目
10行目
7行目
8行目
5行目
6行目
3行目
4行目
1行目
2行目

もし、解決する方法を分かる方がいらっしゃいますようでしたら些細なことでも結構ですのでアドバイス頂けないものでしょうか。
恐れりりますがなにとぞよろしくお願いいたします。
めぐみ
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5

ベストアンサー率 51% (174/337)

他カテゴリのカテゴリマスター
セル関数での対応ですが、添付の図の様な事がしたいのであれば、Sheet2のA2に↓の式を入れ、横と下にコピーでどうでしょう
=OFFSET(Sheet1!$A$1,COUNTA(Sheet1!$A:$A)-ROW()+MOD(ROW(A2),2)*2,COLUMN()-1)
お礼コメント
megumi199

お礼率 39% (25/64)

mt2015さま
お礼のご連絡が遅れてしまい大変申し訳ありませんでした!
本当にいつも親身に教えてくださり本当にありがとうございます。
風邪をひいてしまってずっと寝込んでしまいました。
今日ようやくベッドから降りれるようになって。
さきほど、アドバイス頂いた方法で完ぺきに私のしたかったことが実現できました!
本当に丁寧にご説明くださりありがとうございました。
また、ご連絡が遅れてしまい本当に本当に申し訳ありませんでした!
今後とも何卒よろしくお願いいたします!
めぐみ
投稿日時 - 2018-03-18 22:29:01
OKWAVE 20th Be MORE ありがとうをカタチに

その他の回答 (全5件)

  • 回答No.6

ベストアンサー率 62% (84/135)

他カテゴリのカテゴリマスター
>これ以上、ご面倒おかけしたくないのでご返信は結構です。
とのことですので、以下の説明をして下ります。

=QUERY({ARRAYFORMULA(ROW('Sheet1'!A2:K)),'Sheet1'!A2:K},"select Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10, Col11, Col12 where Col2 Is Not Null and Col1 + 19 > " &COUNTA('Sheet1'!A2:A) &" order by Col2 desc, Col1 desc")

この計算式の意味

Sheet1のA2~K列の末尾まで値群が対象です。

Col1が取り出すときの行番号群です。
Col2が取り出したA列の値群です。
Col3が取り出したB列の値群です。
省略
Col12が取り出したK列の値群です。

取り出すときの条件
・A列が空欄ではない、かつ
・末尾行から上方向に20行         

各行のソート順
第一キー:A列の降順
第二キー:行番号の降順 です。
    
  • 回答No.4

ベストアンサー率 62% (84/135)

他カテゴリのカテゴリマスター
>私のしたいことのイメージは下記のアドレスにて共有しました。
このような話であれば、

提示された「スクリプト」の末尾
order by Col2 desc, Col1 desc")
これを単に
order by Col2 , Col1 desc")
とすれば期待の結果になるものと思います。
お礼コメント
megumi199

お礼率 39% (25/64)

何度も申し訳ありませんでした。
思った通りの動作はしませんでした...
これ以上、ご面倒おかけしたくないのでご返信は結構です。
本当に見知らぬわたくしにこんなに熱心にご指導くださりましてありがとうございました。
投稿日時 - 2018-03-15 00:10:18
  • 回答No.3

ベストアンサー率 62% (84/135)

他カテゴリのカテゴリマスター
スクリプトに order by Col2 desc, Col1 desc とありますので、
おそらく、A2の行から10行を(単純に)逆順に並べ替えているのではなく
A列の降順に並べ、更に、
A列に同じ値があったら行番号の降順に並べているだろうと思います。

行の並びが逆転しているように見えるのは、
たまたま、Sheet1のA列が昇順に並んでいるからだろうと思います。
だとすれば、、
Sheet1のA列を期待のように並ぶよう書き換える、
あるいは、
どこかに、並べ替え専用の列を設け、
課題スクリプトを書き換えるという対応が順当と思います。



課題スクリプトは、SQL文の並べ替え機能を使っていますので
期待のような結果にするためには、
ソートキー(並べ替えに使う列)が必要です。
少なくとも私は、期待の並べ替えをSQL文で、
かつソートキーの列無しで実現することはできません。


もし、
並べ替え元の範囲(Sheet1)がA2からK11固定で
かつ、
出力先範囲もA2からK11セル固定でよければ、
出力先範囲のセル全数に
=INDEX('Sheet1'!$A$2:$K$11,(IF(MOD(abs(ROW()-12),2)=1,abs(ROW()-12)+1,abs(ROW()-12)-1)),COLUMN(),1)
といった計算式を埋めることで期待の結果になるだろうと思います。


追記

Sheet1とか、A2:Kといった記述から
多くの皆さんはエクセルの話と誤解しましょう。
まだまだエクセルが事実上のスタンダードですから。
なので、質問内容の冒頭で、
Googleのスプレッドシートであることを明示したほうがいいと思います。
お礼コメント
megumi199

お礼率 39% (25/64)

HohoPapaさま

お世話になっています、めぐみです。
貴重なアドバイスを頂きまして大変ありがとうございます。
また、懇切丁寧に教えてください本当にありがとうございました。
早速HohoPapaさまから頂いた関数を試してみましたが私の説明不足の問題で、想定していた結果にはなりませんでした。
いろいろと試してみたのですがよくわからず、再度ご連絡させていただくこととなりました(大変申し訳ありません)。
ただ、ものすごく私のしたいことに近づいているのは感覚で分かるのですが。。。
私のしたいことのイメージは下記のアドレスにて共有しました。
https://drive.google.com/file/d/12_rdt0rzdjymdkBrOCYO2IU7xP775sOI/view?usp=sharing

グーグルスプレッドシートSheet1,Sheet2を共有しました。
https://docs.google.com/spreadsheets/d/1lDSheilFLCour7o-DT8cb64bcxrkjXqGH_i1HzWjH5M/edit?usp=sharing
私のしたいことは、下記のSheet1をSheet2のようにしたいです。
※Sheet2に関数を埋め込むことで、Sheet2のように表示させたいです。
※Sheet1の”データがある一番最後の行から20行”を処理します。

お忙しいところ大変恐れ入りますが、HohoPapaさまにお頼りするしかなく、なにとぞご指導いただきたくなにとぞよろしくお願いいたします。

めぐみ
投稿日時 - 2018-03-14 22:20:42
  • 回答No.2

ベストアンサー率 18% (330/1779)

済みません、
一つ伺い損ねてました。

Excelですか?
https://xn--t8j3bz04sl3w.xyz/spreadsheet/arrayformula/1918/
補足コメント
megumi199

お礼率 39% (25/64)

Excelには「arrayformula関数」はありません。
投稿日時 - 2018-03-13 18:47:30
  • 回答No.1

ベストアンサー率 18% (330/1779)

確かに、
サポートが無いと、困りますよね。


1から、何がしたいか、
お教え頂ければ、

ある程度、技術が
既に、浸透していて

一定、
誰でも、読める、

そういった、意味に
おいても
メンテナンス性の、高い、

しかも、
ある程度は、古いバージョンでも
稼働する、

プロ志向の、高い
新たな式を、

ご提供できる事も
あると、思います。


如何でしょうか?

お話し、頂けますでしょうか?
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ