• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000ですがINDEX関数の使い方がよく分かりません。)

Excel2000でのINDEX関数の使い方について

このQ&Aのポイント
  • Excel2000でのINDEX関数の使い方についての質問です。INDEX関数についてまだよく理解できていないので、具体的な使い方を教えていただけませんか?
  • Excel2000でINDEX関数を使用しようとすると、マクロにウィルスが含まれているかもしれないという警告が表示されますが、これについて理解できません。ダウンロードしたファイルは安全だと思いますが、正確な意味が知りたいです。
  • Excel2000での問題に関してお伺いします。カウンターのような便利な機能を作成する方法を教えていただけますか?また、INDEX関数を使う際の行と列の指定方法に関して具体的な説明をお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>将来的にはやるつもりですが、マクロというのはどういう目的のために開発されたんでしょうか? 自動実行させることを目的とした、自分自身でつくるプログラムで、もう、30年近く前から初期の表計算から搭載されてきた機能です。今、ことさらにマクロがどうかという事もありませんが、ただ、それを動かす言語は長い間に変遷してきています。今、Excel は、VB6をベースにしたプログラムが搭載されています。 本格的に使えるようになるのは、プログラミング言語そのものを学ぶことになりますが、ソルバーもゴールシークも、郵便番号ウィザードも、本来、マクロです。また、ピボットテーブルも組み込み型のマクロです。マクロを記録マクロだと勘違いしている人もいるようです。 今回の場合、ややこしいことをさせる時に、数式を使って出す方法と、プログラムを使って出す方法と、二種類あるということです。数式は、ワークシートの負担にはなりますが、マクロですと、ワークシートに結果を書き込むだけです。 >HLOOKUPに関しては「#N/A」と表示されます。何故でしょう? =HLOOKUP(5100,$J$34:$Q$53,F33,FALSE) または、 =HLOOKUP("請求額",$J$33:$Q$53,F33+1,FALSE) とすればよいと思います。

gokurosama
質問者

お礼

再度の回答ありがとうございます。 VLOOKUP,HLOOKUP,INDEX・・・勉強を始めたばっかりなので、イメージがはっきり固まって来るまで時間がかかりそうです。 教科書にあるような簡単な例ならパッと理解出来るのですが、このような(私にとっては複雑な)リストをHLOOKUPの観点からはどう見たらいいのか、など、ちょっと手間取りました。(^_^;) 取りあえず理解出来たつもりにはなりました。 プログラミング言語は関数よりもっと時間がかかりそうですね。(┬_┬) ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>マクロにはウィルスが含まれている可能性があるとかの警告が出るのですが、この意味が実はよく分かりません。 まず、マクロのセキュリティが「中」にしてあるからです。その内容は捨ててしまって結構です。目的の内容には、今回のものには関係ありません。安全だと思うのでしたら、マクロ・セキュリティは、今回の場合は「低」にしても結構です。 ="金 "&TEXT(INDEX($J$34:$R$53,$F$33,8),"[DBNum2][$-411]G/標準")&" 円也" G33:G34辺りにあるフォーム・コントロールのスピンボタンを使って、コントロールの書式設定のコントロールの部分で、$F$33をリンクセルに置いています。そうすると数字が出てきます。(右クリック->-コントロールの書式設定)(図を参考にしてください) >何故これが「行」に相当するのでしょうか? ただのカウンターです。1~20まで出るようになっています。それを、行数に代用しています。 ちょっと試しに、数式と同じものを、マクロで置き換えてみました。(Excel 2000 で試してあります)マクロに登録すると、C列50行目から同じように出てきます。但し、書式はそのままにしてあります。 '//標準モジュール Sub スピン1_Change()  Dim rng As Range  Dim i As Long  Dim buf As String  Set rng = ActiveSheet.Range("K34:Q53")  If WorksheetFunction.CountA(rng) < 3 Then Exit Sub  i = ActiveSheet.Spinners(1).Value  If i > rng.Rows.Count Then Set rng = Nothing: Exit Sub '行数を越えたら離脱   With rng   Range("C50").Value = .Cells(i, 1).Value   Range("C51").Value = .Cells(i, 2).Value   Range("C52").Value = .Cells(i, 3).Value   If .Cells(i, 7).Value <> 0 Then   buf = Evaluate("NumberString(" & .Cells(i, 7).Value & ",2)")   Range("C55").Value = "金 " & buf & " 円也"   End If  End With  Set rng = Nothing End Sub

gokurosama
質問者

お礼

回答ありがとうございます。 カウンターが行数の代用になるとは面白いですね。 無事カウンターを作ることが出来ました。 マクロのマの字も勉強しておりません。従って100%理解出来ません。将来的にはやるつもりですが、マクロというのはどういう目的のために開発されたんでしょうか?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

="金 "&TEXT(INDEX($J$34:$R$53,$F$33,8),"[DBNum2][$-411]G/標準")&" 円也" 上記の$F$33が検索値になってます。 この場合はJ34:J53が上から順に1からの数値になってるため、F33に入力されたコードの数値が そのまま行番号になってます。 INDEX(範囲,範囲の一番上を1とした行番号,範囲の一番左を1とした列番号) INDEX($J$34:$R$53,$F$33,8)=>J34:R53範囲の上からF33(の数値)行目の左から8列目(R列)の値 ちなみにコードがランダムでINDEX,VLOOKUP,HLOOKUPでそれぞれ同じ値を求める場合 INDEX($J$34:$R$53,MATCH($F$33,$J$34:$J$53,0),8) VLOOKUP($F$33,$J$34:$R$53,8,FALSE) HLOOKUP(8,$J$34:$R$53,MATCH($F$33,$J$34:$J$53,0),FALSE)

gokurosama
質問者

補足

回答ありがとうございます。 遅くなりました。理解するのに時間がかかっていました。 ほぼ理解出来たと思っていますが、 最後に挙げられた3つの関数ですが、HLOOKUPの引数の意味がよく分かりません。 INDEXとVLOOKUPに関しては、引数の意味も理解出来たのですが、 HLOOKUPのここで書かれている引数の意味が分かりません。 教科書ではHLOOKUP(検査値,範囲,行番号,検査の型)となっておりますが、ここで何故検査値に8を入れられたのですか?他の部分→$J$34:$R$53,MATCH($F$33,$J$34:$J$53,0),FALSEに関しては理解しているつもりですが・・・。 因みに上記の関数3つの数式を入力してみましたら、INDEXとVLOOKUPに関しては正しく表示されますが、HLOOKUPに関しては「#N/A」と表示されます。何故でしょう?(赤字部分)→ http://www.geocities.jp/rankei32000/yookyuusho1.htm

関連するQ&A

専門家に質問してみよう