• ベストアンサー

指定列と行が一致するセルの値を別シートセルに入力

sheet1のB3~B10にAからHの文字がありC2~H2に日付9/1~9/6がありC3~H10の枠内に数値が入力されています。sheet2のC3~F7の枠内にB列文字B~H、2行目日付9/1~9/4に一致する数値をsheet1よりボタンで入力したいのですがどなたかVBAが解る方宜しくお願いします。 環境はoffice Excel2013です。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.1

VBAでなくても数式で Sheet2のC3に =IFERROR(INDEX(Sheet1!$C$3:$H$10,MATCH($B3,Sheet1!$B$3:$B$10,0),MATCH(C$2,Sheet1!$C$2:$H$2,0)),"") として下と右にコピーすればいけると思いますがVBAがいいんでしょうか。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

Sheet1のC2:H2とSheet2のC2:H2は、 並びが必ず同じという条件でよければ 次のようなコードでいかがでしょうか? コード中のF1やF2は F1がB列、F2がC列、F3がD列のことです。 対象列の数だけ、F2から並べてください。 Sub Sample1()  Dim SQL As String  Dim cn As Object  Dim rs As Object  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=NO;IMEX=1"  cn.Open ThisWorkbook.FullName  SQL = ""  SQL = SQL & "select T2.F2,T2.F3,T2.F4,T2.F5,T2.F6,T2.F7" & vbCrLf  SQL = SQL & "FROM [Sheet2$B3:B6500] as T1" & vbCrLf  SQL = SQL & "Left join [Sheet1$B3:Z6500] as T2 on " & vbCrLf  SQL = SQL & "T2.[F1]=T1.[F1] " & vbCrLf  rs.Open SQL, cn  With ThisWorkbook.Worksheets("Sheet2")   .Range("C3").CopyFromRecordset rs  End With End Sub

kuma0220
質問者

お礼

有難うございました。勉強になりました。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.2

VBAがいい場合 No1の操作の最後にSheet2で式をコピー( 広めにコピーしたほうがいいかも)した範囲を選択してコピーしその場で値貼り付けを追加した操作をマクロで記録してそのコードをボタンに割り付けてください。

kuma0220
質問者

お礼

有難うございました。

関連するQ&A

  • 列と行にある指定文字が一致したセルの一行下の値

    表2セル"A"を表1B列から探し同行にある"合計"という文字の1行下の数値及び2行下の数値を表2のH4,H5セルに入力し同様に"B","C"に対しても行いたいのですがどなたか関数が解る方よろしくお願いします。環境はoffice2019です。

  • 別ブック2列がマッチした文字を入力する

    BブックのC列7行目から文字(15ステップ毎文字が入替る)がまたF列8行目からは年月(2017/4~2018/3)、AブックのA列4行目から年月がまたB列4行目からは文字が添付のように連続して入力されています。BブックC列文字とAブックB列文字が一致、BブックF列年月とAブックA列年月が両方一致した行のAブックC列の文字をBブックのE列に順々に入力していきたいのですが。 どなたかVBAコードが解る方ご教授願います。 環境はwindows7 office2013です。

  • 指定文字の同じ行2列、3列目の文字入力の個数

    B列3~12行に文字が入力されており指定文字Bの行の2列目に文字が入力されていればその個数をC14にまた3列目に文字入力個数5個をD14に入力したいのですがどなたか関数が解る方宜しくお願いします。Excel2013です。

  • 列と行で一致したセルに

    HY-123 1/3 15個 AB-456 1/1 50個  といようなデータを入力したら 自動で下の表(A列の製造番号、1行目の日にちは固定の表)に 個数が入るにはどうすればいいですか? 番号と日付が一致すれば、その交差セルに個数が出るようにしたいのです。 宜しくお願いいたします。 1月  A     B    C    D 1          1    2    3 2  HY-123            15 3  AB-456   50

  • セルに数式を入れずに計算結果のみを入力

    B2:D11まで入力された文字と数値がありB,C列のマッチした文字の計算値をH列にいれたいのですが現在H列はVBAによりセルに数式が入っておりますが計算結果のみをH列に入力したいのですが尚、図では11行までですが行数が多い時を踏まえてVBAコードをご教授願います。

  • 一致した行を返したい

    excel2007を使っています おしえてください    A   B   C 1   1   3 2   2   8 3   2   3 4   1   3 5   7   8 6   2   8 7   1   3 このような表がありA1の1と同じ1をA列2行目から検索 B1の3と同じ3をB列2行目から検索 どちらも値が一致した行(検索開始行から数えて何番目)をC1に返したい (この場合3と6がありますが早く一致した3を返したい) C2は4となります Cに入れる数式を是非教えてください

  • Open Office 3.2 Calc である値に一致したセルを含む

    Open Office 3.2 Calc である値に一致したセルを含む行を別のシートに抜き出し一覧にする方法を教えてください。 例えば、 Sheet1 という名前のシートに 行1 1,いぬ,,5 行2 8,ねこ,a,9 行3 11,いぬ,b,d のようなデータがあるとして、 行1から順番に見ていき、列B(左から2番目)の値が いぬ という文字列の場合に、 Sheet2 という名前のシートに、 行1から順番に、そっくりそのまま参照(コピーではなく)するように値を入力し、 行1 ='Sheet1'.A1,='Sheet1.B1',='Sheet1.C1',='Sheet1.D1' 行2 ='Sheet1'.A3,='Sheet1.B3',='Sheet1.C3',='Sheet1.D3' とするということです。 例は3行ですが、実際には不規則に大量にあります。(例では奇数行に いぬ がありますが、実際はそういう規則性はありません) 数式でやろうとしましたが、規則的に連続していないものを詰めて並べるのは不可能だと思いました。 マクロでもできるのかわかりませんが、どんな関数、プロパティを使ったら出来るのかでもよいので教えてください。 私は基本的なOpen Office BasicなどOpen Officeがサポートしているスクリプト言語なら理解できます。

  • エクセル(EXCEL) 2つの値が一致する行の参照

    エクセルで、以下のように「Sheet1」のA列に日付、B列には時刻が 入力されており、C列にはその時刻の為替レート(ドル)が入力され ています。 【Sheet1】      A     B     C 1 2009/3/1   7:00   99.56 2 2009/3/1   8:00   99.12 3 2009/3/1   9:00   96.12 以下続く この行が延々と数年間分入力されているとします。 そこで、例えば、「Sheet2」に毎日の7:00の為替レートのみを抜きだ して縦に並べたい(以下のように)とします。 【Sheet2】        A     B     C 1 2009/3/1   7:00   99.56 2 2009/3/2   7:00   98.39 3 2009/3/3   7:00   100.10 (要するに、毎日7:00の為替レートのみ時系列で見たい) この場合、「Sheet2」のC列にはどのような数式を入力すれば良いの でしょうか? 【Sheet1】から、「09年3月1日」且つ「7:00」の行のC列、 を拾ってきて、【Sheet2】のC列に返すということなのですが、 参照するところが2つ(日付と時刻)ある、場合の式の組み方がわかりません。 (もしひとつなら、VLOOKUP とか、INDEX + MATCH 関数で組めるのですが・・) 恐れ入りますが、おわかりになる方なにとぞご教示くださいませm(_ _)m。

  • シートの行並びの値を別のシートの列にコピーする式は

    あるシートに並んでいる行数値を別シートの列に並べる関数を教えていただけませんか (例)シート1      A   B   C   D 12   48 38  15  39 上記A12 に48 B12に38 C12に15と並んでいる数値を別のシートに列に並びかえる式は? シート2   A 1 48 2 38 3 15 4 39 と行った様にする関数を教えてください。単に数値だけなら                  行と列の並び替えでできますがそうではなくシート1に数値を入力                  することにより関数によって自動的にシート2に数値を表したい。                  

  • Excelセルに条件付きの日付を入力したい

    B列5行目の日付を入力したときD列5行目の数字とその上の行にある数字が一致した右隣E列と日付の差が5日以上経過していればC列5行に"ー"を差が5日未満であればB列の日付に5日を足した日付を順々に入力したいのですがどなたか関数の解る方よろしくお願いします。 因みに環境はoffice2013です。

専門家に質問してみよう