人気マンガがだれでも無料♪電子コミック読み放題!!

エクセルでA列に日付を入力しました。
ファイルのオープン時に自動的に今日の日付にカーソルがジャンプするように設定したいのですが?
また、ファイルオープン時にカーソルが一番左又は日付の右に移動するように設定できますか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。

KenKen_SP です。

Find メソッドは文字列の検索なので、検索値を日付の表示形式に書式を
そろえてやる必要があります。Match 関数を使うと日付書式に関係なく
シリアル値で検索ができます。ご参考までに。

標準モジュールに下記をコピー&ペーストして下さい。

Sub AUTO_OPEN()

  Dim lngR As Long
  On Error Resume Next
  Worksheets("Sheet1").Activate
  lngR = WorksheetFunction.Match(CDbl(Date), Range("A:A"), 0)
  If Err.Number = 0 Then
    Cells(lngR, "A").Select
  Else
    MsgBox "今日の日付は見つかりません"
  End If
  On Error GoTo 0

End Sub
    • good
    • 2
この回答へのお礼

大変参考になりました。
ありがとうございました。

お礼日時:2006/02/14 21:15

日付の右に移動するものです。


日付の列の場合は Offset(0, 0) にしてください。

Public Sub Auto_Open()
Dim rng As Range
On Error GoTo Func_Exit
Worksheets("sheet1").Activate
For Each rng In ActiveSheet.Range("A:A")
If IsDate(rng) Then
If rng = Date Then
rng.Offset(0, 1).Select
Exit For
End If
End If
Next
Func_Exit:
Exit Sub
End Sub
    • good
    • 1

#1の回答の訂正です。


よく確認しないで、投稿してしまいました。
今日の日付にジャンプさせるには、

Sub Auto_Open()
Worksheets("Sheet1").Activate
Range("A:A").Find(What:=Format(Date, "m月d日"), _
LookIn:=xlValues, LookAt:=xlWhole).Select
End Sub

です。Offsetは余計でした。
ひとつ右隣を選択の場合には
Offset(, 1)
を付けてください。
    • good
    • 1

こんばんは。


日付の入力されたシートの名前がSheet1だとして、
ファイルを開く時にマクロを動作させるには、
標準モジュールに
Sub Auto_Open()
Worksheets("Sheet1").Activate
Range("A:A").Find(What:=Format(Date, "m月d日"), _
LookIn:=xlValues, LookAt:=xlWhole).Offset(, 1). _
Select
End Sub

とするか、
ThisWorkbookの
Private Sub Workbook_Open()に
上記と同じ内容のコードを書けば出来ると思います。
サンプルでは、Format関数の書式表示文字列を
"m月d日"としていますが、この部分は実際の書式表示に
合わせて変えてください。

また日付のセルの右を選択させるには、上記で選択されたセルのOffset(,1)を
選択すれば良いと思います。
    • good
    • 2

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel ハイパーリンク先のセルを自動で変更したい

いつもお世話になっております。

A列に日付を順に入力しました。

A1 2005/07/19
A2 2005/07/20
A3 2005/07/21



こんな感じに2年先まで入力しました。

そこへあるセルにハイパーリンクを設定するのですが、リンク先をシステム日付(今日日付)のセルに行くように仕向けたいのですが可能でしょうか。

例えば、
今日が2005/7/20ならリンク先はA2へ
今日が2005/7/21ならリンク先はA3へ

宜しくお願い致します。

Aベストアンサー

#1のmshr1962です。先ほどの式A列を対象にした時に+1を外すのを忘れてました...

本題ですが別シートなら
=HYPERLINK("#シート名!A"&(MATCH(TODAY(),シート名!$A:$A,1)),"今日")
でできます。"今日"の所は表示したい名称か値に変更してください。

解説
MATCH(TODAY(),$A:$A,1)はA列から今日の日付[TODAY()]を探して位置を割り出しています。
(存在しない場合は直前の行へとびます。)
位置がわかれば
"#A"&(位置)で飛び先のアドレス[今日が2005/7/20ならリンク先はA2へ]になります。
頭の#は同じブックを表す符号です。
異なるシートの場合は、シート名+!で設定できます。

Q【Excel】希望したセルへ一発でジャンプするには?

たとえば、AX2490へジャンプしたいと思います。
Excelの標準機能で一発で移動する方法は無いでしょうか?

Aベストアンサー

こんばんは

既に答えは出ていますが
http://www.kenzo30.com/ex_kisopoint/onepoint_hensyu4.htm
(1)直接入力
 左上の名前ボックスに直接AX2490と入れてリターン
(2)名前ボックスの利用
 あらかじめジャンプ先で名前ボックスに定義しておくと
 リストボックスから選択できます。
(3)メニュー→編集→ジャンプ
 でジャンプ先を入力する。
 ショートカットキーはF5(又はCTRL+G)。

では。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QエクセルVBAで、条件に一致するセルへ移動

 エクセルVBAでシート内を検索し、条件に一致するセルを選択させたいのですが、どのようにしたら良いでしょうか?
 同一データはシート内に一つしか無い前提です。
勉強不足ですみませんが、どなたかご教授お願いします。

Aベストアンサー

こんにちは。maruru01です。

Findメソッドがいいでしょう。
こんな感じ


Dim rg As Range

Set rg = ActiveSheet.Cells.Find(What:="検索文字列")
If rg Is Nothing Then
  MsgBox "シート内には見つかりませんでした。"
Else
  rg.Select
End If


Findメソッドの詳細は、VBAのヘルプを参照して下さい。

Qエクセルファイルを開く時、常に同じシートから開くようにするには?

 エクセルがそこそこ使えている者です。
エクセルファイルに多数(100以上)のシートを置き、先頭シートに見出し一覧をつくり、ハイパーリンクで希望のシートへ跳ぶようにしているのですが、各シートで作業終了後そのまま閉じてしまうと、次回開く時そのシートが開くのですが、どのシートで閉じても開く時は見出しシートになるような方法を教えて下さい。
 ソフトのようなものでもないので、簡便な方法でお願い致します。

Aベストアンサー

マクロで作ります。
ツール⇒マクロの作成で マクロ名 "auto_open" として作成内容は次のマクロをコピペすればいいです。
ファイルを開いた時はいつも、"sheet1 "の "a1" にセルの指定が来るようになります。
開くシートやセルを変えたい時は、"sheet1 "や"a1"を変えることにより、任意の場所で開けます。

  Sub auto_open()
  Worksheets("Sheet1").Activate
   Range("a1 ").Select
  End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング