詳しい方教えてください。
Excelで下記のような式が入っていたのですが、私の知識では理解出来ず、どのような意味、機能か教えて頂けないでしょうか。作成した人が既におらず、また周りに質問できる人がおらず、困っています。
またわからない式やマクロの式など出てきた場合、どうすればいいのでしょうか。
一つ一つ調べていけばいいのでしょうが、それでも私のレベルではわからないことがあります。
どうしてこのような式を作成したのか、がわからないと業務でそのファイルを使用し続けることに不安を感じます。メンテナンスをしなければいけないときが来るかもしれませんし。。。
私の技術レベルでは、ファイルだけ渡されて使うことは出来ても理解するところまで及びません、、、情けないですが。。。
式の意味(2つ)、と調べてもわからない関数やマクロに出会ったとき、どのように調べていけばいいのか、アドバイスをいただければと思います。
式1
if(AND(isnumber(AU63),ISNUMBER(AW63)),if(AW63-AU63<0,"修正","OK"),"-")
→AU63とAW63が数値であり、かつ、AW63-AU63<0 なら 修正、そうでなければOK、AU63,AW63がすうちでなければ”-”を入力する、でしょうか。
式2
@index(sheet1!G13:G81,column()-@cell("col",sheet2!F6)+1,row()-@cell("row",sheet2!f6)+1)
→すみません。こちらについては全く理解ができず。。。
ご教授頂ければと思います。
No.3ベストアンサー
- 回答日時:
こんばんは
各関数の基本的な構文を調べて、分解して考えれば宜しいのではないでしょうか?
例えば、ご提示の式1であれば、IF関数の構文は、
IF(論理式, [値が真の場合], [値が偽の場合])
ですが、ご提示の場合はこれがネストした形式になっています。
式1を上記の各項ごとに分解してみれば、
if(
AND(isnumber(AU63),ISNUMBER(AW63)), //条件式1
if(
AW63-AU63<0, //条件式2
"修正", //条件1が真で条件2も真の場合
"OK" //条件1が真で条件2が偽の場合
),
"-" //条件1が偽の場合
)
※ 必要なら、空いているセルに、各項に=を付して数式として入力してみれば、部分々々での値がどうなっているかを確認することができるでしょう。
式2の「@」記号に関しては、まず以下をご参照ください。
(無いものとして考えても、意味の上では違いはありません)
https://support.microsoft.com/ja-jp/office/%E6%9 …
INDEX関数は、
INDEX(配列, 行番号, [列番号])
ですから、
index(
sheet1!G13:G81, //配列範囲
column() - cell("col",sheet2!F6) + 1, //行番号
row() - cell("row",sheet2!f6) + 1 //列番号
)
のように展開できます。
※ 項の内容がさらに関数になっていてわかりにくい場合には、再度展開してゆくことを繰り返せば順次単純な式となりますので、理解しやすくなると思います。
※ 上式の場合は、CELL関数が情報関数の一つで、指定されたセルの「列番号」や「行番号」を返す関数であることがわかれば、理解できるものと思います。
https://support.microsoft.com/ja-jp/office/cell- …
ご提示の式の場合は、Cell関数内のシート名は不要ですし、更には、普通にCOLUMN(F6)、ROW(F6)のようにしてしまった方が、多分、理解しやすくなるものと思います。
また、「+1」も省略してしまうなら G6、F7を指定しておくことで可能にはなりますが、こちらの場合は、式の意味がわかりにくくなってしまう可能性があります。
実際に、どのように使っているのかが不明ですが、行番号の計算に列番号を用い、列番号の計算は行番号となっていて、単純な増減になっていますので、フィルコピーした際に元の表の行列を入れ替えた様なイメージになるものと想像します。
(ご提示の式では、参照元のsheet1!G13:G81が絶対参照になっていないのでそうはならないのですが、その点が腑に落ちませんけれど・・)
単純に表の行、列の入れ替えだけが目的なら、TRANSPOSE 関数というものも用意されています。
https://support.microsoft.com/ja-jp/office/trans …
No.2
- 回答日時:
式1 についてはその認識で大丈夫です。
本来の目的としては、
if(AW63-AU63<0,"修正","OK")
だけで良いのでしょうが、
AW63セルとAU63セルに、空白など数値が入力されていない状況に対する処理が加えられているという事ですね。
ですので、
>AU63とAW63が数値であり、
かつ、
AW63-AU63<0
なら 修正、
そうでなければ OK、
AU63,AW63がすうちでなければ”-”
……ではなく、
AW63-AU63<0
なら 修正、
そうでなければ OK、
ただし、AU63,AW63が数値でなければ”-”
と考えたほうが全体を理解しやすいと思います。
・・・
式2 については、
おそらく、別のシートのセルを指定する方法を理解されていないのだろうと推測します。
同じシート上のセルを参照するときは
=A1
=A1:A10
=IF(A1="Good","良好","ダメ")
=SUM(A1:A10)
のように指定します。
別のシート……Sheet2のA1セル、A10セルの場合は、
=Sheet2!A1
=Sheet2!A1:A10
=IF(Sheet2!A1="Good","良好","ダメ")
=SUM(Sheet2!A1:A10)
のように指定します。
「シート名 + ! + セル番地」
で指定すると覚えてください。
あとは、質問者さんならあと少し調べることで理解できると思います。
……ちなみに別のファイル(book)のセルも指定する方法があります。
[ファイル名]シート名!セル番地
↓
[example.xlsx]Sheet2!A1
こんな指定になります……
という事で、
@index(sheet1!G13:G81,column()-@cell("col",sheet2!F6)+1,row()-@cell("row",sheet2!f6)+1)
これを
index(G13:G81,column()-cell("col",F6)+1,row()-cell("row",f6)+1)
として見ると、理解できると思います。
使用されている関数の使い方を一つずつ確認してみましょう。
……まあ、「COLUMN()」と「ROW()」が意味不明という方もいらっしゃいます。
これはその関数を使っているセルのセル番地がそのまま適用されている状況です。
その式で評価しようとしているセルが
A1セルなら
COLUMN(A1)
B12セルなら
COLUMN(B12)
と同じです。
ROW関数も同じ。
(´・ω・`)
COLUMN(B12)は列の番号「2」
(B12は左から数えて2列目になるため「2」)
ROW(B12)は行の番号「12」
(B12は上から数えて12行目になるので「12」)
くらいの説明しかない解説もありますからね。
・・・
このように関数だけでは説明できない部分もあります。
他にも例えば、
=MATCH(検索値,範囲 [,照合の型])
などと使い方の説明があった時に、
[ ] で囲まれたところは丸ごと省略することができる
と、あらかじめ説明されていないと
=MATCH(A1,B1:B10[,1])
などと書いて
「この数式には問題があります。」
と Excel から怒られることになったりする。(実際に怒られて思考が停止した人がいたんです)
本来は、”[” 、”]” を除いた
=MATCH(A1,B1:B10,1)
または省略して
=MATCH(A1,B1:B10)
が正解。
……ただし、MATCH関数の最後の ",1" は省略した時に自動で指定される値なので書かなくても良いけど、別の値(例えば ",0")の場合は省略できません。
他にも
=OFFSET(基準,行数,列数 [,高さ,幅])
に対して
=OFFSET(A1,,3)
とか、
「行数」「列数」に相当する値が無いときは、”0” が指定
「高さ」「幅」 に相当する値が無いときは、それぞれ ”1” が指定
されていると見なす。
なんてね。
ルールを覚えるまで今しばらく時間がかかると思いますが、気長にExcelと付き合ってあげてください。
丁寧な回答ありがとうございます。
未だに式が理解出来ず、理解出来たとしても自分で同じような式が作ることが出来るかがわからず。。。
気長にExcelと付き合うしかないのでしょうね。。。
頭が痛いですが、諦めずに頑張りたいと思います。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
Excelからnotesメールを自動で...
-
VBA マクロ実行時エラー’1004Ra...
-
Excelが勝手にシート移動してし...
-
コピーしたファイルのマクロを...
-
Powerpoint 2003 でのVBA UserF...
-
エクセル終了時の保存確認メッ...
-
別のパソコンでエクセルのマク...
-
マクロでマクロを削除する
-
外部データを取り込むマクロ
-
エクセルマクロ実行中に別ファ...
-
EXCEL マクロ クリップボードク...
-
マクロを消すマクロは不可能?
-
昨日まで動いていたエクセルの...
-
excelファイルに使われているVB...
-
excelが別プロセスで起動してし...
-
Visual Basic Editorが起動しな...
-
「開いているすべてのブック」...
-
Excelマクロ ファイル名が変わ...
-
エクセルファイルを自身のファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
昨日まで動いていたエクセルの...
-
コピーしたファイルのマクロを...
-
【マクロ】マクロが割当てされ...
-
VBAを一度起動するとずっと出て...
-
VBA マクロ実行時エラー’1004Ra...
-
別のパソコンでエクセルのマク...
-
アクセスでファイルを開いたと...
-
excelファイルに使われているVB...
-
エクセルマクロ実行中に別ファ...
-
マクロを消すマクロは不可能?
-
外部データを取り込むマクロ
-
エクセルファイルを自身のファ...
-
excelが別プロセスで起動してし...
-
【マクロ】エラーが発生⇒実行時...
-
EXCEL マクロ クリップボードク...
-
Excelが勝手にシート移動してし...
-
Excel2010 PERSONAL.xlsbの挙動...
-
エクセル2013vbaで、見えない名...
-
excelでpersonal.xlsを常に開く...
おすすめ情報