• ベストアンサー

セル値が指定行のセル値とマッチしたら先頭列へ移動

エクセルを開いたらA1セルの値が5だったら2行目のA1セル値とマッチしたG2 5の値の列が先頭列へ移動するようにしたいのですがVBAコードが解る方宜しくお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>エクセルを開いたらA1セルの値が5だったら2行目のA1セル値とマッチしたG2 5の値の列が先頭列へ移動するようにしたい という事は、「A1セルの値とマッチした値が入力されているセルが存在している列が先頭列になる様にする」という処理を行うのは、Excelbookを開いた時のみであり、Excelbookが既に開いた状態となっている時には、特定のシートを開いただけでは何も起こらない様にすると考えれば良いのでしょうか?  又、「A1セルの値とマッチした値が入力されているセルが存在している列が先頭列になる様にする」という処理を行うのはExcelbookを開いた時に最初に表示されるシートのみで、他のシートに対してはその様な処理を行わないと考えても宜しいのでしょうか?  もしそれで宜しければ以下のVBAを、"標準モジュールではなく"、ブックモジュールに記述されると良いと思います。  尚、「Microsoft Visual Basic」ウィンドウにおいて「プロジェクト - VBAProject」画面の中にある「Thisbook」と記されている箇所をダブルクリックしてから、「プロジェクト - VBAProject」画面の右隣のVBAの構文の記入欄の左上にある「(General)」と記されている欄をクリックし、現れた選択肢の中にある「Workbook」を選択する事で、VBAを記述するモジュールがブックモジュールに切り替わります。 【参考URL】  Excel VBA 入門講座 > 第4章 ワークブックの操作 / 5.ワークブックのイベントプロシージャ   http://excelvba.pc-users.net/fol4/4_5.html Private Sub Workbook_Open() 'QNo.8962735 セル値が指定行のセル値とマッチしたら先頭列へ移動 Dim myValue, myCell As Variant myValue = Range("A1").Value If myValue = "" Then Exit Sub Set myCell = Range("B2", Cells(2, Columns.Count)).Find(What:=myValue, _ LookIn:=xlValues, Lookat:=xlWhole, MatchByte:=False, MatchCase:=False) If myCell Is Nothing Then Exit Sub ActiveWindow.FreezePanes = False Columns("C").Select ActiveWindow.FreezePanes = True ActiveWindow.SmallScroll ToRight:=myCell.Column - Selection.Column End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

例データ Sheet1 A1 セルに 6 第2行目に(B列から) 1 3 6 5 4 6 コード ThisWorkbookのイベントの Workbook_Open()のイベントを選んで Private Sub Workbook_Open() x = Worksheets("Sheet1").Range("A1") MsgBox "A1 の値は" & x '-- For j = 1 To 25 If Cells(2, j) = x Then MsgBox j & "列にありました" y = Chr(64 + j - 1) MsgBox Chr(64 + j - 1) & "まで非表示にします" Columns("B:" & y).Hidden = True End End If Next j MsgBox "一致する列はありません" End Sub ーー このブックを開くと ADEFG列が見えて 6 6 5 4 6 列非表示でやりましたが、「折り畳み」でもできるかも。 WEBで検索 「エクセル 折り畳み 」で検索 http://hamachan.info/excel/group.htmlなど ーー For j = 1 To 25 の25はy = Chr(64 + j - 1)の関係で、AA,AB列以右になるとうまく行かないので、AAより右の列が ある場合は別途考えてください。”A:E”をColumns("1:5”).Hidden = TRUEのような表現に持ち込むと うまく行くでしょう。 エクセル2013でテスト。

kuma0220
質問者

お礼

有難うございます。

全文を見る
すると、全ての回答が全文表示されます。
  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.1

それなら、VBAとVBとは別物なのでExcelカテにした方が良いかと思います。 新しく質問する前に必ずこの質問を締め切るなどしてくださいね。

kuma0220
質問者

お礼

有難うございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでセルを次の行の先頭の列に移動させる方法を教えてください。

    Excelでセルを次の行の先頭の列に移動させる方法があれば教えてください。 例えば、A1、B1、C1と順に入力し、C1のセルでEnterキーを押すと次の行の先頭列A2に入力セルが移動されるといった場合です。

  • 複数指定セル値と合致したセル値を返す

    A,B,C列に添付の値が入力されておりセルE2の値とF2~F7の値が両方一致したものがA,B列にあればC列の値をG列に順々に入力していきたいのですが。 どなたか関数が解る方、欲をいえばVBAコードが解る方ご教授願います。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!

  • VBAでi行j列ずれたセルの値

    VBAでセルA1にTESTという名前を定義しているとします。 セルA1はRange("TEST")で値を取得できますが、 セルA1からi行j列ずれたセルの値はどうやって取得できるのでしょうか? 今までは、Cells(1+i,1+j)で取得していましたが、 行や列を挿入することもあるので、セルに名前を付けたいと思います。

  • エクセル 網掛けしてあるセルの行を残してそれ以外の行を削除するVBA

    windows-xp、エクセル2003を使っています。 エクセルデータがA列からU列まであります。 (1000件程かな、時々AA列まである時もあります) G列には、網掛けしてあるセルがあります。 そこで!! 網掛けしてあるセルの行だけを残して、網掛けがされていない行のデータを一気に削除する!というマクロ(VBA)を作りたいのですが、どうすればよいでしょうか? VBAまだ、よくわかっていないので、初心者レベルでわかりやすく教えてくださると助かります。 宜しくお願い致しますm(_ _)m

  • Excelで、指定した範囲の先頭のセルの値を取得するには?

    Excelで、指定したセル範囲(1列)で、空白を除いた先頭のセルの値を取得する 方法はありますでしょうか? できればマクロを使用せずに関数だけでできるほうがありがたいです。 例)  | A ------------ 1 |(空白) 2 | ○ 3 | △ 4 | × 5 | □ の場合、検索範囲にA1:A5 を指定すると、○が値として返ってくるような感じです。

  • Excelのセル移動 最終列から行のトップへ移動するには

    例えばA1からE5の表で、セルを列方向(A1⇒B1⇒・・・E1)に移動させ、最終列までくれば次ぎの行のトップ(E1でEnterを押せばA2に移動させたい)にセルを移動したいのですが、今はTabで列を移動し、最終列でEnterで行なっています。全てEnterでできると聞いたのですが、どなたかご存知の方教えてください。よろしくお願いします。

  • 列にある指定文字のその行の指定文字の合計数

    ExcelでセルH1文字"う"がA列の文字とマッチした文字"う"の行B3:F3の文字"A"のみを合計しセルI1に数値3をつづいてH2文字に対してI2にA列文字"こ"の行"A"の合計数を入力したくI列に入れる関数をどなたか解る方宜しくお願いします。

  • (MS-Excel)複数の条件にマッチする複数のセルを配列?で出力させ

    (MS-Excel)複数の条件にマッチする複数のセルを配列?で出力させたい。 たとえば、条件1=A列で値が数値であるセルと、条件2=条件1でマッチしたセルと同じ行でC列で値が「その他」という文字列であるセルを検索させます。 そして、A列でマッチしたセルの値をE列に出力させて、C列でマッチしたセルの値をF列に出力させたい、というような感じです。 VLOOKUP関数などで、{配列}を使うなどすれば可能だと思って試行錯誤したけどダメでした。 なお、データベース関数のように条件セルなど作業セルが必要な方法は使いたくないです。 よろしく、お願いします。

  • CSVファイルの行と列のセルってどうやって指定するのですか?

    たとえば、1行目の2列目のセルの値を消したい。 2行目の5列目のセルの値に数字の5をいれたい。 って場合、行だったら $FILE=data.csv; open(IN, $FILE); @data=<IN>; close(IN); このときの $data[2]は3行目ですよね? では3行目の3列目はどうやって指定するのでしょうか?たとえば3行目の3列目のセルの数字の5だったのをperlを実行したらセルの中を6に書き換えるのはどうしたらいいのでしょうか?

    • ベストアンサー
    • Perl