Excel2003重複しないデータを表示・編集する方法

このQ&Aのポイント
  • VBAの仕様変更でExcel2003での重複しないデータの表示・編集方法が困難になりました。Excelのsheet1に入っているDATAをsheet2に表示・編集するための仕組みを作りたいです。
  • sheet2に顧客Noを入力すると、sheet1のデータが表示される仕組みを作りたいです。現在の画面のF列から始まっているPからYまでの列にセルを挿入することで、sheet1のデータがAU列に表示されるようにしたいです。
  • sheet2に顧客Noを入力すると、sheet1のデータが表示される仕組みを作りたいです。H列に10行分のデータを表示させるために、PからYまでの列にセルを挿入する方法を考えていますが、良い案が浮かびません。ご協力お願いします。
回答を見る
  • ベストアンサー

再質問です。Excel2003重複しないデータを

皆様、いつもお世話になっております。 突然のVBAの仕様変更で、困っております。 質問の題名で検索して頂けると幸いです。 やりたい事は、Excelのsheet1にDATA(データベース)が入っております。 そのDATAをsheet2の方に表示、編集(保存)するという仕様でございます。 添付データは、以前大変お世話になった方が作成されたものです。 これをベースに質問させて頂きます。 この画像は、仮にsheet2とします。DATAがが、入っているのがsheet1になります。 この画面(sheet2)で顧客Noを入力すると、sheet1のデータが表示できる仕組みです。 以前は、この画面のようにsheet1のAK列まででしたが、今回はsheet1のAU列までの データです。列が増えるだけならいいのですが、画面のH列の3行目から12行目まで あるデータを出力させたいのですが、そうするとAUまでsheet1の列を増やす必要が あります。 画面で言いますとF列にsheet1というところにPから始まっているのがsheet1のデータを 出力しているということです。sheet1のP列とQ列の間にセルの挿入、次にQとRにセルを挿入 これを10回くりかえすと、sheet1のY列とZ列にセルの挿入すると、sheet1のデータは、 AU列になります。Pから1つずつ縦にセルを挿入してYまでいきます。 その飛ばした、データを添付画像でいうとH列に10行分の表示をさせたいのですが、 全く良い案が浮かびません。 長文になり分かりづらいかと思いますが、またご協力お願いいたします。

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

  • ベストアンサー
  • wek00
  • ベストアンサー率62% (90/145)
回答No.2

例えば、次の行はSheet2のG列に値をセットしている部分ですが、 > Cells(j, "G") = .Cells(tar.Row, "P").Offset(0, j - 3).Value j が 3, 4, 5 ... 12 となるとき Offsetの第2引数は j-3 なので 0, 1, 2 ... 9 となりますね。 よって、 Cells(3, "G") = .Cells(tar.Row, "P").Value Cells(4, "G") = .Cells(tar.Row, "Q").Value Cells(5, "G") = .Cells(tar.Row, "R").Value  : Cells(12, "G") = .Cells(tar.Row, "Y").Value を実行したのと同じ結果になります。 Offsetの第2引数が 0, 2, 4 ... 18 となるように書き換えれば P列からひとつ飛びに値を取得できます。 どうです?基本的に「何も違いはない」でしょう? 変更作業は面倒ですが。

saw0606
質問者

補足

wek00さま ご回答ありがとうございます。wek00様の言う通りにコードを変更したところ 無事、表示させる事ができました。 因みに変更した箇所は、以下のコードです。 'D列の6~17行目にSheet1(D~O列)のデータを出力 'G列の3~24行目にSheet1(P~AU列)のデータを出力 For j = 3 To 24 If tar Is Nothing Then If 6 <= j And j <= 17 Then Cells(j, "D") = "不明" If 3 <= j And j <= 12 Then Cells(j, "H") = "不明" Cells(j, "G") = "不明" Else If 6 <= j And j <= 17 Then _ Cells(j, "D") = .Cells(tar.Row, "D").Offset(0, j - 6).Value 'Cells(j, "G") = .Cells(tar.Row, "P").Offset(0, j - 3).Value Cells(3, "G") = .Cells(tar.Row, "P").Value Cells(4, "G") = .Cells(tar.Row, "R").Value Cells(5, "G") = .Cells(tar.Row, "T").Value Cells(6, "G") = .Cells(tar.Row, "V").Value Cells(7, "G") = .Cells(tar.Row, "X").Value Cells(8, "G") = .Cells(tar.Row, "Z").Value Cells(9, "G") = .Cells(tar.Row, "AB").Value Cells(10, "G") = .Cells(tar.Row, "AD").Value Cells(11, "G") = .Cells(tar.Row, "AF").Value Cells(12, "G") = .Cells(tar.Row, "AH").Value Cells(13, "G") = .Cells(tar.Row, "AJ").Value Cells(14, "G") = .Cells(tar.Row, "AK").Value Cells(15, "G") = .Cells(tar.Row, "AL").Value Cells(16, "G") = .Cells(tar.Row, "AM").Value Cells(17, "G") = .Cells(tar.Row, "AN").Value Cells(18, "G") = .Cells(tar.Row, "AO").Value Cells(19, "G") = .Cells(tar.Row, "AP").Value Cells(20, "G") = .Cells(tar.Row, "AQ").Value Cells(21, "G") = .Cells(tar.Row, "AR").Value Cells(22, "G") = .Cells(tar.Row, "AS").Value Cells(23, "G") = .Cells(tar.Row, "AT").Value Cells(24, "G") = .Cells(tar.Row, "AU").Value 'H列の3~12行目にsheet1を出力 Cells(3, "H") = .Cells(tar.Row, "Q").Value Cells(4, "H") = .Cells(tar.Row, "S").Value Cells(5, "H") = .Cells(tar.Row, "U").Value Cells(6, "H") = .Cells(tar.Row, "W").Value Cells(7, "H") = .Cells(tar.Row, "Y").Value Cells(8, "H") = .Cells(tar.Row, "AA").Value Cells(9, "H") = .Cells(tar.Row, "AC").Value Cells(10, "H") = .Cells(tar.Row, "AE").Value Cells(11, "H") = .Cells(tar.Row, "AG").Value Cells(12, "H") = .Cells(tar.Row, "AI").Value End If Next j 'イベントを再開 Application.EnableEvents = True 一つ問題がございまして、sheet1(データベース)の方に上書きすることができません。 下記は、私が自分で作ってみたコードですが、上手く動きません。※コメントアウトしてある行です '▼対象とするセルがセル範囲(D10:D17)内であれば処理 Else '検索セルが見つからなければメッセージを表示 If tar Is Nothing Then myRng.Value = "不明" MsgBox "対象のセルが不明です" '検索セルが見つかればDATA Sheetの範囲D~AKで該当項目の検索行を入力値で更新 Else Select Case myRng.Column Case 4 'D列(列番号4)が入力された場合 .Cells(tar.Row, "H").Offset(0, myRng.Row - 10) = myRng.Value Case 7 'G列(列番号7)が入力された場合 .Cells(tar.Row, "P").Offset(0, myRng.Row - 3) = myRng.Value '.Cells(3, "G") = Cells(tar.Row, "P") = myRng.Value '.Cells(4, "G") = .Cells(tar.Row, "R") = myRng.Value '.Cells(5, "G") = .Cells(tar.Row, "T") = myRng.Value '.Cells(6, "G") = .Cells(tar.Row, "V") = myRng.Value .Cells(tar.Row, "P").Offset(0, myRng.Row - 3) = myRng.Value 上記をばらすと、どのようになるのでしょうか。 お手数をお掛けしますが、ご教授ください。

その他の回答 (2)

  • wek00
  • ベストアンサー率62% (90/145)
回答No.3

> .Cells(tar.Row, "P").Offset(0, myRng.Row - 3) = myRng.Value myRngにはセルの場所が1セル分入れられているようですね。ばらされて。 .Rowというのは行番号を取得するメソッド、 .Valueというのは値を取得するメソッド。 例えば、R列の値が入っているセルはG5ですね。 myRngがG5なら、行番号 - 3 は 2。 Sheet1の対象行のP列のセルから0行2列offsetしたセルは、対象行のR列。 そこにG5の値を代入すれば良い。 という意図の文なんだと思います。 コメントアウトの行ですが、意図がよく分かりません。 私の自宅の現用パソコンでは LibreOffice のVBA互換モードしか テスト環境が無いのですが、条件判断(=か)の結果を セルに書き込む動作になりますね。 作成者や初見の人にとって分かりやすいのが一番です。だからあなたのやり方もいい方法だと思います。 > 言う通りにコードを変更した これは心外。ループの変更忘れてるし。(T_T) お仕事関係のようですから別ルートで対応済みかと思いますが、 一応、回答しておきます。スキルアップには自分で考えてやってみるのが一番ですし。

  • wek00
  • ベストアンサー率62% (90/145)
回答No.1

何が問題なのかよく分かりませんね... Sheet2:G3:G12にP Q R ...Y 列を紐付け を Sheet2:G3:G12にP R T ...AH列を紐付け Sheet2:H3:H12にQ S U ...AI列を紐付け に変更したい、ということかと思いましたが それなら何も違いはないし。 > H列に10行分の表示をさせたいのですが どのような問題があってそれが出来ないのでしょう? それと、以前の質問は以下の2つですか? okwave.jp/qa/q8798457.html okwave.jp/qa/q8801956.html

saw0606
質問者

お礼

wek00様 お世話になっております。無事に表示させる事ができました。 wek00様ありがとうございました。

saw0606
質問者

補足

wek00様 お世話になります。初めまして。分かりづらく申し訳ございません。 以前質問ささせて頂いてご教授頂きましたURLは、下記になります。 http://oshiete.goo.ne.jp/qa/8801956.html > H列に10行分の表示をさせたいのですが どのような問題があってそれが出来ないのでしょう? 上記の問題は、Sheet1のデータベースが、増えたのですが(以前はAIまで、今回はAUまでです) sheet1のデータベースを単にAUまで伸ばし、sheet2のG列に表示させるのは、私でも可能なのですが、 厄介なのは、sheet1のP列から一つ飛で縦に10個セルを挿入して新たに挿入したセルは、無視して sheet2のG列に表示させます。 1.sheet1に新たに挿入したP列から1つ飛で縦にセルを10行分挿入。その挿入したセルは、飛ばして  sheet2のG列に表示。添付画像のままです。 2.sheet1のデータ新たにP列から1つ飛ばしで無視したセルをsheet2のH列の3行目から表示(10行分です) 以前、ご教授頂いたコードは、下記になります。 ■VBAコード 'ワークシート内のセルに変更があった場合自動実行されます ' → 変更されたセルがRange変数「Target」に代入されています Private Sub Worksheet_Change(ByVal Target As Range) '使用する変数の型を宣言(定義) Dim myRng As Variant, mySt As Worksheet, tar As Range, i As Integer Dim j As Integer '変更されたセルの数が10個より大きい場合は終了 If Target.Count > 10 Then Exit Sub '対象とするシートをオブジェクト変数へセット Set mySt = Worksheets("Sheet1") '変数Targetのセルを順次、変数myRngに格納しながら 'For~Next間をセルの数だけ繰り返し処理 For Each myRng In Target  'With~End Withまでの省略した場合のオブジェクト(ここではSheet1)を指定  With mySt   '▼対象とするセルがセル範囲(D3:D5)内であれば処理   If Not Application.Intersect(myRng, Range("D3:D5")) Is Nothing Then    '変更されたセルの値でSheet1(の対象列)を検索して変数tarへ格納    Set tar = .Columns(myRng.Row - 2).Find(myRng.Value, , xlValues, _      xlWhole, xlByRows, xlPrevious, True, True, False)    '変更されたセルの行番号を変数iに格納    i = myRng.Row    'イベントを無効    '(セル内容の変更で自分自身が再度実行されないように無効化)    Application.EnableEvents = False    'Do~Loop間を繰り返し処理    Do     '変数iに1を加算、iが6になれば3に変更     i = i + 1: If i = 6 Then i = 3     'iが変更された行番号になればループから抜ける     If i = myRng.Row Then Exit Do     '検索結果によって出力結果を分岐     If tar Is Nothing Then      '検索結果が見つからなければ不明を出力      Cells(i, "D") = "不明"     Else      '見つかったセルと同じ行の対象項目の値を出力      Cells(i, "D") = .Cells(tar.Row, i - 2).Value     End If    Loop    'D列の6~17行目にSheet1(D~O列)のデータを出力    'G列の3~24行目にSheet1(P~AK列)のデータを出力    For j = 3 To 24     If tar Is Nothing Then      If 6 <= j And j <= 17 Then Cells(j, "D") = "不明"      Cells(j, "G") = "不明"     Else      If 6 <= j And j <= 17 Then _        Cells(j, "D") = .Cells(tar.Row, "D").Offset(0, j - 6).Value      Cells(j, "G") = .Cells(tar.Row, "P").Offset(0, j - 3).Value     End If    Next j    'イベントを再開    Application.EnableEvents = True   '▼対象とするセルがセル範囲(D6:D17又はG3:G24)内であれば処理   ElseIf (Not Application.Intersect(myRng, Range("D6:D17")) Is Nothing) _     Or (Not Application.Intersect(myRng, Range("G3:G24")) Is Nothing) Then    '検索セルtarが無い場合は検索    If tar Is Nothing Then     Set tar = .Columns("A").Find(Range("D3").Value, , xlValues, _       xlWhole, xlByRows, xlPrevious, True, True, False)    End If    '対象とするセルが変更可能のセル範囲であるかの判定    Application.EnableEvents = False    '▼対象とするセルがセル範囲(D6:D9)内であれば処理    If Not Application.Intersect(myRng, Range("D6:D9")) Is Nothing Then     '検索セルが見つからなければ不明、見つかれば値を戻して表示     If tar Is Nothing Then      myRng.Value = "不明"     Else      myRng.Value = .Cells(tar.Row, "D").Offset(0, myRng.Row - 6).Value     End If     '変更不可のメッセージを表示     MsgBox "対象のセル""" & myRng.Address(False, False) & """は変更できません"    '▼対象とするセルがセル範囲(D10:D17)内であれば処理    Else     '検索セルが見つからなければメッセージを表示     If tar Is Nothing Then      myRng.Value = "不明"      MsgBox "対象のセルが不明です"     '検索セルが見つかればSheet1の範囲D~AKで該当項目の検索行を入力値で更新     Else      Select Case myRng.Column       Case 4 'D列(列番号4)が入力された場合        .Cells(tar.Row, "H").Offset(0, myRng.Row - 10) = myRng.Value       Case 7 'G列(列番号7)が入力された場合        .Cells(tar.Row, "P").Offset(0, myRng.Row - 3) = myRng.Value      End Select     End If    End If    Application.EnableEvents = True   End If  End With Next End Sub 説明が上手くなく申し訳ございません。お手すきの時で構いませんので ご回答お願い致します。よろしくお願いいたします。

関連するQ&A

  • Excel2007で質問です。

    Excel2007で質問です。 別の方からもらったブックなのですが、必要な個所以外の行や列が削除されていました。 具体的に言うと、56行目から下の行がなく、バックの青い画面が表示されています。 列ではAP以降右側が削除されていて、バックの青い画面が見えています。 表示モードは「標準」で、印刷範囲やシート保護もされていません。 これら列や行は非表示ではなく「削除」されていて、挿入しなければ増やすことができません。 例えば列APを選択し列挿入をするとAQが作られるといった感じです。 別シートにコピー等せずに、このシートで、一度に全行・全列表示(標準のシートのような) させることはできないのでしょうか。 (画像では、サンプルとして小さくしたシートを載せました)

  • 他シートのデータを参照させたい(excel2007

    excel2007において、他のシートのデータを参照させる方法についてどなたか教えてください。 =sheet1!a1 のように入力して他のシートのデータを表示させる方法は使っているのですが、複数のセルのデータを参照させるのに手間取っています。 たとえばsheet1にある5行5列(25セル)のデータをsheet2の5行5列(25セル)に表示させたいときは、25個のセルすべてに上記のように入力すればいいのですが、参照させたい元の25セルのどこかにセルの結合が使われていると、sheet2においても同じように結合させなければsheet1と同じ表示になりません。 sheet1でセルの結合が使われたときはsheet2においても同じように「セルの結合も自動で参照させる(連動させる)」ということは可能なのでしょうか? 詳しい方いらっしゃいましたら、よろしくお願いいたします。

  • Excel2003の集計および印刷について

    いつもお世話になっております。 新年早々ですが、今回はExcelについて質問させてもらいます。 現在、とあるデータの集計を行い、印刷を行う方法を考えていますが、あまり詳しくないので困っています。 何かいい方法があればと思い投稿しました。 まずExcelファイルに「入力用シート」と「出力用シート」の二つのシートがあります。 「入力用シート」には、 C1セル、D1セル、E1セル、F1セル C2セル、E2セル、F2セル に表題や番号などを入力します。 また、下記のようにA1セルとB1セルから下へずっとデータを入力します。データ量は多いときは1000行ぐらいです。 例) 1000   5 1200   2 900    10 800    2 1000   1 2400   3 あとフォームのボタンを作りこれを押すと、「出力用シート」にC1,D1,…F2までのセルをそのままコピーし、A1、B1から下へ入力されているデータのみを集計し表示を行いたいと思ってます。 集計の条件はA列ごとに集計し降順で表示です。 結果として「出力用シート」には 以下のように表示したいと思ってます。 あいうえお かきくけこ 111111 222222 さしすせそ       333333 444444 2400   3 1200   2 1000   6 900   10 800    2 ですが、A列とB列に入力するデータが多くなった際、印刷すると右半分が白紙の状態で、できれば右半分にもと思ってます。つまり1枚に2ページ分印刷と言うことです。 データは1枚に30行ぐらいで左半分と右半分で60件ぐらい表示。 (文字を大きく表示させるため) それ以上になると2枚目に1枚目と同じように1行目2行目は1枚目と同じで印刷できればと。 例) -----1枚目----- あいうえお かきくけこ 111111 222222 さしすせそ       333333 444444 2400    3    440    2      1200    2    430    22 1000    6    415    9 900    10    409    2 800     2    399    8 500     1    395    5 450     3    393    2 -----2枚目----- あいうえお かきくけこ 111111 222222 さしすせそ       333333 444444 391    1     320    2 311    22 説明が長くなりましたが、何卒よろしくお願いします。

  • Excel2003重複しないデータを別のシートに

    お世話になります。Excel初心者です。皆様のお知恵をお貸しいただければ幸いです。 Excel2003で下記の件で、非常に困っております。 ※皆様、申し訳ございません。ベストアンサーを選択すると質問が締め切られることを   知らなかった為、再度質問させて頂きたくよろしくお願いいたします。 sheet1に重複しないデータがあります。 A B C ←セル横 1 顧客No 商品No パーツNo 2 12345 23-1111 23 3 13456 21-1234 55 4 23456 22-5555 66 sheet2に上記のどの情報を入れても、3つのデータを表示させたいです。 Dセル 3行目 顧客No 4行目 商品No →ここに入力(21-1234) 5行目 パーツNo 上記の縦の列は空白です。sheet1の2の商品No21-1234と入力すると sheet1の顧客No13456とパーツNo55が表示されます。 同様にsheet2のパーツNo空白欄にsheet1のパーツNoの55と入力 すると、sheet2の顧客Noと商品Noが表示されます。 こういう事は、Excel2003で可能なのでしょうか。 VBAで実施しようかと思っておりますが、ど素人ですので、お手数ですが なるべくコードのコメントを入れて頂けると幸いです。 お手数お掛けしますが、ご教授よろしくお願いいたします。

  • 【Excel】マクロを使って、自動集計ができるようにしたいと思っています。

    こんにちは。 宜しくお願い致します。 アクセスがあったデータをピポッドテーブルでまとめ、さらに集計結果を出したいと思っています。 ピポッドテーブルを作成するまではマクロの自動記録でどうにかなったのですが、その後の集計結果のところでとまどっています。 <データの現状> ※ピポッドテーブルで出したデータは、1・2行目が空白、3~5行目に項目名が入っており、6行目からデータが入っています。何行までデータが入っているかはその月によって異なり、行の一番最後はA列に「総計」と入力されています。 ※A~C列は項目名(日付や商品名など)が入っています。 D列以降は合計などが入っており、ここで基準として使いたい項目はすべて4行目に入っています。 列の数は項目によって増減します。 項目の一番最後は「総計」です。 マクロで集計したいのは次の作業です。 (1)「Sheet1」を全コピー→「Sheet2」に形式を選択して貼り付け→値貼り付け (2)貼り付けたシートで、D列以降、4行目の項目が「集計1」「集計2」「詳細集計」「総計」以外のものも列を表示しないにする ※D列から始まって、「集計1」の前の列までを表示しないにするのと、「集計1」の次の列から「集計2」の前の列までを表示しないにしたい。 例えば、H列に「集計1」・L列に「集計2」が入力されている場合は「D~G列」「I~K列」を表示しないにしたい。 (3)詳細集計の列を1列選択し、列を1行挿入。挿入した列4行目のセルに「合計」と入力。 (4)挿入した列のところに、6行目以降、A列に「総計」と入っている行まで数字のデータが入っているところ(A列で「総計」と表示されている行まで)は、「集計1」と「集計2」のセルの合計をそれぞれ表示し、枠線を入れる。 (5)一番先頭に1列挿入し、6行目から元A列の「総計」と表示されている前までの通し番号を入れる。 (6)「総計」の次の列の4行目に、「ゼロ数」と入力し、5行目に(3)で挿入した列、A列に「総計」と入っている1行前までの範囲で「0」表示があるセル数を表示。 (7)ゼロ数と入力したの次の列の4行目に「ゼロ率」と入力し、先に出した「ゼロ数」を(5)で入力した通し番号の一番最後の数で割った数を表示。 (8)入力終えた後はA1のセルを選択。 以上になります。 長いですが、どなたか教えてください。 宜しくお願い致します。

  • EXCEL関数 一覧から週計データを導き出したい

    Sheet1に1売上商品1行のデータが年間通しで並んでいます。 Sheet2に1日1行の週計データを表示したのですが。 Sheet2の [B2]以下の列に入れる関数 Sheet2の [C2]以下の列に入れる関数 Sheet2の [D2]以下の列に入れる関数 Sheet2の [E2]以下の列に入れる関数 を教えてください。 ================ Sheet1 売上入力表 Sheet2 日別売上集計表 画像添付しています

  • Excel2003に関しての質問です。

    Excel2003に関しての質問です。 A列の各セルごとに数字や文字など、さまざまな文字列が存在したBookにて、 『数字が8個連なった行のみを抽出し、ほかの行は削除する』ことはできるでしょうか? たとえば添付のようなものです。 添付画像は2007ですが、会社のは2003なので… この場合は、2.3行目や5.6行目などを抽出し、ほかのデータは削除したいのです。 また、この抽出作業をマクロ記憶しておき、手間を省きたいと思っています。 面倒なのが、データの個数が日々増減しているので、 Aの○○行を毎回消せば大丈夫!というものでもないので、困っています。 どなたかご教示ください…

  • EXCEL2013 データはどこに?

    EXCEL2013で、データの入力をしていて、 ヘッダフッターを挿入しようと思い、 「挿入」→「ヘッダフッター」とたどってヘッダフッターの編集を行ったのですが、 そこから元の画面に戻ることができません。 真っ白のシートに変わってしまいます。 印刷するとデータは印刷されるのですが、 画面にデータが表示されないのです。 どうしたらいいのでしょうか?

  • EXCEL関数についてご質問です

    EXCELの関数の知識が無く、どなたか以下要件に対する対応方法があれば教えて頂ければ幸いです。 【概要】 ・シートA(インプット用)の各セルの入力値に対して、シートB(アウトプット用)に関数等を入れて変換出力をしたいと思っています。 (商品のマスタになるのですが、列の項目としては30項目くらいあり、例えばシートAの「商品名」列の全角文字をシートBに半角文字で出力する等の関数を作成しています。) 【やりたい事】 ・シートAの「商品名」列(I列)に「\n」という文字列が入っている行があった場合、シートBにはその行自体を出力しないという関数を組みたい 何か良い方法があればご教示いただければ助かります。どうぞよろしくお願いします。

  • (EXCEL)重複したデーターの抽出について

    EXCEL2003 シート「sheet1」に下記のようなデーターがあります。 <sheet1>   A   B   C  D 1 りんご 青森 AAA BBB 2 みかん 愛媛 CCC DDD 3 みかん 青森 AAA BBB 4 りんご 青森 AAA BBB 5 みかん 愛媛 CCC DDD A列とB列が同じ値のものをシート「sheet2」に重複しているデーター は1行だけになり、E列にカウントした数が入力されるようにしたいです。 (C列やD列は同じ値でなくてもA列とB列が同じ値の時にカウントして抽出したいです) <sheet2>   A   B   C  D   E  りんご 青森 AAA BBB  2  みかん 愛媛 CCC DDD  2   ご教示のほどお願いします。

専門家に質問してみよう