エクセルシートに張り付けたデータを、数式を使って自分の好きなように並び替えたいときに使える方法を、備忘録のためにまとめます。
使える場面
「シートのデータを左右反対にして、別シートに張り付けたい」という場面で使えます。筆者は具体的に、横に長い入力データの1行分だけ、左右を入れ替えたいという場面で使いました。
具体例でいうと、下の図のY1とY2のデータ列をグラフにするときに、Y2だけを左右反対に入れ替えたいという場面で使いました。
indirect関数でのシート名指定
indirect関数で別シートのセルを参照するには、下図のようにシート名を指定します。
セル上でシート名を参照するときは「’シート名’!」を使います。indirect関数内にシート名の参照を組み込むためには「” “」で文字列として認識させます。シート名は「’ ’」で囲われていることに注意してください。
indirect関数でのセルの参照方法
セルの参照方法には①A1形式②R1C1形式、の2つがあります。数式を使ってセルを参照したい場合には②R1C1形式を使います。
indirect関数内での具体的な書き方は、下図のようになります。青字のセルの参照方法を「FALSE」にすることでR1C1形式になります。(TRUEでA1形式になります。)
上図の4行目のように、同じシート内に計算用の数字の列を作成すると、indirect関数を使って、別シートのセルの並べ替えが、行いやすくなります。
式中の「”R”&3&”C”&23-M4」の部分がR1C1形式でセルを参照している記述です。RとCは文字列として扱いますので「” ”」で囲います。
「23-B4」の部分が数式で、列の番号を与えている計算部分です。
(図では、23からM4セルの数値を引いた数字を列番号にしています。)
行の番号を変えたい場合は、「3」の部分を変えれば、自由に設定できます。
補足として、「&」は文字列と数字をつなぐ際に必要な記号です。
セルの参照方法-R1C1形式-について
RはRow(行:横の方向)、CはColumn(列:縦の方向)という意味です。
上図のようにD列3行目(D3)は、R1C1形式で表すと、”R3C4″となります。3行目の4列目のセルということを意味しています。
(ADRESS関数は、指定したセルに書いてある文字列を表示する関数です。)
まとめ
VBAのマクロを使わずに、セル上で別シートのセルを、数式を使って並べ替える方法をご紹介しました。
自分の備忘録のため作成したものですが、どこかで役に立てば幸いです。