質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

201閲覧

Excel:VBAを使用せずセルの指定をする方法

hitoko.Nk

総合スコア1

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2025/04/28 05:47

実現したいこと

呼び出し先のセルが「B」「S」「AJ」「BA」と規則的に飛ぶセルを指定したいです。
*Aを1、Bを2とするのであれば、等差は17個です。

最終的に、「=シート名!B1」「=シート名!S1」…とオートフィルが使えるようになるのが理想です。

発生している問題・分からないこと

その為、まずはA1セルを起点として、横方向に「ABCD…」とアルファベットを作成しました。

作成方法は
=IF(COLUMN(A1)<=26, CHAR(64 + COLUMN(A1)), CHAR(64 + INT((COLUMN(A1)-1)/26)) & CHAR(65 + MOD(COLUMN(A1)-1, 26)))
とセル内に入力しています。

また、その下に数字を同じく横方向へ引っ張りました。

Excel表では
A|B|C…
1|2|3…
と表示されている状態です。

起点より17個目を取りたかったので
=OFFSET(A1, 0, INDIRECT("B2")+16)
として「S」の文字を取得

続いて
=INDIRECT("シート名!"&OFFSET(A1, 0, INDIRECT("B2")+16)&1)
とすると、refエラーが返ってきて正しく出力されません。

同一シート内で
=INDIRECT(OFFSET(A1, 0, INDIRECT("B2")+16)&1)
とすると取得は出来ています。

別シートに飛ばす場合、何か特殊な指定方法があるのでしょうか?

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

別のセル内では(上記とは記述内容に全く関係ありません。)
=INDIRECT("シート名!"&シート名!IK$1&ROW(IK30)+40)
などと記述しているので、特別おかしくはないと思うものの
実際エラーをはかれているので困っています。

ExcelでPHPのvar_dumpのような関数があれば、ありがたいのですが

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk.exe

2025/04/28 06:45

まず、お使いになっている Excel のバージョンを明記されることをお奨めします。 (バージョンによって使用できる/使用できない関数が異なりますので)
hitoko.Nk

2025/04/28 08:13

コメントありがとうございます。 とても大事な事を忘れていました。 ありがとうございます。 使用している環境は OS:Windows10(22H2) Excel:Home and Business 2021 となります。
guest

回答1

0

ベストアンサー

Excel:Home and Business 2021

では、LET 関数FILTER 関数は使用できるものと仮定します。

Excel表では
A|B|C…
1|2|3…
と表示されている状態です。

呼び出し先のセルが「B」「S」「AJ」「BA」と規則的に飛ぶセルを指定したいです。
*Aを1、Bを2とするのであれば、等差は17個です。

  1. 同じブックに空のワークシートを新規作成する。

  2. そのワークシートの A1 セルに次のような数式を設定する。

xlsx

1=LET(sourceRange,シート名!A1:BA2,firstCol,2,colSkip,17,FILTER(sourceRange,(COLUMN(sourceRange)>=firstCol)*(MOD(COLUMN(sourceRange)-firstCol,colSkip)=0)))

ちなみに CHOOSECOLS 関数がサポートされているバージョンであれば、次のような数式も使用できます。

xlsx

1=LET(sourceRange,シート名!1:2,firstCol,2,colCount,4,colSkip,17,columnList,SEQUENCE(colCount,,firstCol,colSkip),CHOOSECOLS(sourceRange,columnList))

投稿2025/04/28 08:46

sk.exe

総合スコア1077

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hitoko.Nk

2025/04/28 09:22

回答ありがとうございます。 LET 関数と FILTER 関数は、未知の関数だったため 挙動に馴染むためにも少し練習してみます。
hitoko.Nk

2025/04/28 10:14

触っている間に、シート名を「ほげ(ふー)ばー」と括弧付きにしていた事が原因と判明しました。 記号等なしの環境でテストするのが前提でありながら…お恥ずかしい限りです。 自己解決のきっかけとなった回答にベストアンサーさせていただきます。 ありがとうございました。 同じ悩みの方がいらっしゃった場合 =INDIRECT("'シート名'!"&OFFSET(A1, 0, INDIRECT("B2")+16)&1) で解決可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問