エクセルのA1からD10の表に縦に数値を入力します。
各列によって空白のセルがあります。
A列の入力が終わればB1に、B列の入力が終わればC1に
セル移動するにはどうすればいいでしょうか?
(空白セルがあるため、Ctlキー+↑キーでは上手くいきません。)
教えて下さい。よろしくお願いします。
 

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

A 回答 (3件)

試しにマクロを作ってみました。

シートモジュールとある方を、お好きなシートのシートモジュール(念のため、参考URLを付けてあります)に記述してください。標準モジュールとある方は、標準モジュールに記述してください。
上記シート上において、Enterを押したときは、とにかく次の行の一番左に飛びます。左方向に送りたい時は、TABで行ってください。漢字変換の最初のEnterでは上記動作は起こりません。
他のシートに移った時には機能しないようにしてあります。
<シートモジュール>
Private Sub Worksheet_Activate()
Call setEnterEvent
End Sub

Private Sub Worksheet_Deactivate()
Call resetEnterEvent
End Sub

<標準モジュール>
Sub ENTER_Key()
Dim myCell As Range

Set myCell = ActiveCell
myCell.Offset(1, 1 - ActiveCell.Column).Activate
End Sub

Sub setEnterEvent()
Application.OnKey "{RETURN}", "ENTER_Key"
Application.OnKey "{ENTER}", "ENTER_Key" 'テンキー
End Sub

Sub resetEnterEvent()
Application.OnKey "{RETURN}"
Application.OnKey "{ENTER}"
End Sub

<参考>
http://excelvba.pc-users.net/fol1/1_1.html
http://excelvba.pc-users.net/fol4/4_5.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2009/05/17 08:37

A列で終わった行で


→を押す。B列に移動。
ENDキーその後↑キーでB1び行くと思うが
これでは不可か。
ーーー
ツールーオプションー編集で、カーソル移動を下に設定し
A1:D10を範囲指定し、データを入れていけば、空白があっても
データ入力+エンターで(データが無い場合はエンターのみで)、最下行に来ると隣右列第1行目にカーソルが移動しませんか。やったこと無いのかな。これでは不都合な点が有るのかな。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2009/05/17 08:35

1.入力する範囲を選択


2.入力後エンターキーを押す
3. エンターキーを押すごとに選択範囲のA列入力後、B列、B列入力後C列に移動

参考効率よく入力する方法 
行方向への入力をご覧ください。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/cell_ …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考になりました。

お礼日時:2009/05/17 08:34

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

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

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

Q【Excel】選択したすべてのセルを絶対参照にする方法

ExcelでF4を押せばセルを絶対参照に変えられますが、複数のセルを同時に絶対参照に変える方法を教えてください。

Aベストアンサー

こんばんは!
一例ですが・・・
Ctrlキーを押しながら、範囲指定(飛び飛びでも構いません)した後に
F4キーを押してみてください。
これでOKかと思います。m(__)m

QExcelで「A列で任意のグループ」「B列は空白以外」「C列は空白セル」の数

さきほど、質問をした者です。
回答を締め切った後で、追加質問がありますので、新たに質問させていただきます。(たびたびスミマセン)

Excelで「A列で任意のグループ」名、かつ、「B列は空白ではないセル」、かつ、「C列は空白セル」の件数を出したいのです。 (オートフィルタではなく。)

=SUMPRODUCT((A3:A271="グループ名")*(B3:B271="▲▲▲")*(C3:C271=""))

という式を作ったのですが、「B列の空白以外」という条件にする"▲▲▲"の部分はどうすればいいのでしょう?

Aベストアンサー

B3:B271<>""

Q別シートのセルを絶対参照にする

office2007、Excelで別シートのセルを絶対参照する方法を教えて下さい。
セルに「=シート名セル番地」を力した場合は、
セル番地を$で絶対参照にしても
参照先シートのその上に行を挿入すると
$A$5を指定していても行を挿入した場合は
自動的に$A$6になってしまいます。
別シートに行を挿入しても参照先のセルを固定する方法を教えて下さい。

Aベストアンサー

INDIRECT関数なら、文字列として範囲を指定できるので、行挿入や列挿入で勝手に指定範囲が変わることはありません。

例:
 INDIRECT(参照文字列,参照形式)
 と、使います。
 =INDIRECT("Sheet1!A1",TRUE)


※ INDIRECT関数の詳細は Excelのヘルプや解説サイトなどで確認してください。

QA列が空白なら、計算式の入っているB.C・・~列も空白で表示する方法。

A列に対して、B.C・・~列にそれぞれ違った式が入っています。
A列が空白だと、B列#N/A、C列1 ・・・と、それぞれ答えが返ってきます。
今までは、各B、C・・列に「A列が空白の場合は表示しない」設定を「条件付書式」を使ったり「IF(ISERROR・・」の関数を使ったり
無い知恵と知識を振り絞って悪戦苦闘の末、1列1列・・こつこつ設定していたのですが
「もっと簡単な方法があるのでは??」と都合のいいことを考えました。

しかし、恥ずかしながら私には知識が無いもので、そんな事が出来るのか、また仮に出来るとしても方法がわかりません。
関数でも、条件付書式でも、何でもかまいません。
指定したセルが空白の場合、そのセルに対して数式が入っている他の複数セルにも何も表示しないように一発で出来るようにするには、
どうすればいいのか教えて頂けませんか?
98です。出来るだけ簡単な方法がありがたいです。
余談なのかもしれませんが、B列にはVLOOKUPの関数、C列には「A列内の数字+1」と言う式が入っています。
C列はA列に0と入力しても、空白でも1という答えが返ってきてしまいます。そこでA列が空白の場合答えが表示されないようにしたいのです。)
宜しくお願いします。

A列に対して、B.C・・~列にそれぞれ違った式が入っています。
A列が空白だと、B列#N/A、C列1 ・・・と、それぞれ答えが返ってきます。
今までは、各B、C・・列に「A列が空白の場合は表示しない」設定を「条件付書式」を使ったり「IF(ISERROR・・」の関数を使ったり
無い知恵と知識を振り絞って悪戦苦闘の末、1列1列・・こつこつ設定していたのですが
「もっと簡単な方法があるのでは??」と都合のいいことを考えました。

しかし、恥ずかしながら私には知識が無いもので、そんな事が出来るのか、また仮...続きを読む

Aベストアンサー

ご質問の「もっと簡単??」、「一発で出来る」という事と解釈して回答しますので、相違していれば読み捨て下さい。
(1)対象範囲を選択
(2)選択された状態で数式を入力、完了時にctrl+enterキー同時に押下して下さい。
   一例ですが以下のようになります。
   =IF(セル<>"",VLOOKUPやセル+1の数式,"")
   セルが""(空白)でなければ数式を実行、空白ならば空白を設定。
為参考.B列はVLOOKUP関数の為、検索値が見つからない場合は#N/Aが戻りますので、IF(COUNTIF(検索範囲,A1),VLOOKUP数式,"")とする方法もあります。

Qexcel 割引率のセルを絶対参照した場合の式は?

下記で、D2の15%のセルを絶対参照にした場合、式はどのようにすればいいでしょうか。
例)
絶対参照にするセル D2 15%(割引率) 
          B4~B7 元値
          C4~C7 結果 
自分では・・・ 
C4=B4-B4*$D$2 で入力してみたのですが、他に式はありますか。

絶対参照にしない場合は、C4=B4*(1-0.15)でやってみました。
いずれも自信はありません。
よろしくお願いします。

Aベストアンサー

一例です。
小数点以下四捨五入、=ROUND(B4*(1-$D$2),0)
小数点以下切り上げ、=ROUNDUP(B4*(1-$D$2),0)
小数点以下切り捨て、=ROUNDDOWN(B4*(1-$D$2),0)

QA列とB列の重複を抽出したいのですがA列とB列の値は一部だけ同じ文字です。ご教示お願いします。

エクセル初心者です。重複を見つけるのが仕事です。いろいろやってみたのですがうまくできません。
お知恵をお貸しください。

A列には企業名が入力されています。
B列にも企業名が入力されていますが全く同じ文字ではないのです。

たとえばこういうことです。
A1 (有)雪見酒      B1  雪見
A2 株式会社豪雪地帯   B2 (株)豪雪地帯
A3 ゆきかき本舗     B3 (有)ゆきかき本舗

A列にある企業名とB列にある企業名が同じであればセルを塗りつぶすか○を表示させるように
したいのです。
重複を見つけるのが目的なので、ほかの方法でもかまいません。
すみません、A列のセルとB列のセルが全く同じ名前ならば重複が見つけられたのですが
ここから先がどうしてもわからないのです。。。
申し訳ありませんがどうか教えてください。。。

Aベストアンサー

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim nameT1(maxrow1)
ReDim nameT2(maxrow2)
Range("C1:" & "D" & maxrow2).Value = ""
Call makeTable(nameT1, "A", maxrow1)
Call makeTable(nameT2, "B", maxrow2)
For row1 = 1 To maxrow1
For row2 = 1 To maxrow2
If Cells(row2, "C") = "" Then
If Mymatch(nameT1(row1), nameT2(row2)) = True Then
Cells(row2, "C").Value = "○"
Cells(row2, "D").Value = row1
End If
End If
Next
Next
t2 = Time
MsgBox ("チェック完了 処理時間=" & Minute(t2 - t1) & "分" & Second(t2 - t1) & "秒")
End Sub
'余分な文字を削除した結果をテーブルに格納する
Private Sub makeTable(ByRef nameT() As String, ByVal col As String, ByVal maxrow As Long)
Dim row As Long
Dim ary As Variant
Dim name As String
Dim i As Long
ary = Array("㈱", "(株)", "株式", "(有)", "有限", "会社")
For row = 1 To maxrow
name = Cells(row, col).Value
For i = 0 To UBound(ary)
name = Replace(name, ary(i), "")
Next
nameT(row) = name
Next
End Sub
'企業名が一致かどうか判定する
Private Function Mymatch(ByVal name1 As String, ByVal name2 As String) As Boolean
Mymatch = False
Dim pos As Variant
pos = InStr(1, name1, name2, vbTextCompare)
If pos > 0 Then Mymatch = True
End Function
-----------------------------------------------------
一致の精度が悪ければその旨補足してください。
(一致すべきものが一致しない、一致してはいけないものが一致している)
100%解決できる保証はありませんが、多少のチューニングは行います。

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim ...続きを読む

Qエクセルで複数のセルの絶対参照を一度に外す方法

宜しくお願いします。

複数のセルに例えば 

”$A3$*D3”

という式が入っていて、一度に

”A3*D3”

にする方法というのはあるのでしょうか?

私はいちいちセルをアクティブにして、F4キーで絶対参照を
外すというのを各セルごとに行っているのですが、
一度に置換か何かで”$A3$”を”A3”にすることは出来ないでしょうか

教えてください。
宜しくお願いします。

Aベストアンサー

解っているんでは、??。
編集⇒置換⇒検索する文字 $
置換する文字 (空白にして) カーソルをここに入れる(あわせるとも言う?) ⇒全て置換

これで、終わりです。

Q空白セルを含む最終行変動データ行列で、特定の二つの列の空白セルのみに○を入力するマクロコードを教えて

空白セルを含む最終行変動データ行列で、特定の二つの列の空白セルのみに○を入力するマクロコードを教えて下さい。

Aベストアンサー

こんばんは!

>特定の二つの列・・・
とは具体的にどの列か判らないので、A・B列としてみました。

空白セルとは数式などによって空白に見えるセルではなく、何もデータがないセルだとします。

Sub Sample1()
Dim j As Long, lastRow As Long
For j = 1 To 2
lastRow = WorksheetFunction.Max(lastRow, Cells(Rows.Count, j).End(xlUp).Row)
Next j
If lastRow > 1 Then
On Error Resume Next '//←念のため//
Range(Cells(1, "A"), Cells(lastRow, "B")).SpecialCells(xlCellTypeBlanks).Value = "○"
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

>特定の二つの列・・・
とは具体的にどの列か判らないので、A・B列としてみました。

空白セルとは数式などによって空白に見えるセルではなく、何もデータがないセルだとします。

Sub Sample1()
Dim j As Long, lastRow As Long
For j = 1 To 2
lastRow = WorksheetFunction.Max(lastRow, Cells(Rows.Count, j).End(xlUp).Row)
Next j
If lastRow > 1 Then
On Error Resume Next '//←念のため//
Range(Cells(1, ...続きを読む

Q多数のセルに入力してある数式を$を使わずに絶対参照コピーする方法

 初めて質問いたします。
 技術系計算をエクセルで組み立てる際、多数のセルに入力されている相当長い数式等を$を使用することなくコピーする方法を教えてください。
 以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 
 多数のセルを対象にしていますのでF4 キーによる変換では相当な時間がかかるので投稿しました。
 宜しくお願いいたします。

Aベストアンサー

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのかもしれませんが、現実に困っていない状況から、はっきりしていない記憶の中から、他人の独特のテクニックを導きだすからです。

以下の方法も定番とはいえません。

一旦、文字化させておいて、貼り付け、それを「区切り位置」ボタンで、一気に数式化させるというテクニックかもしれません。

具体的には、数式を置換で、「=」 --> 「'=」 と全体を全て置換します。そして、その範囲をコピーして、目的の場所に貼り付け、「区切り位置」で、「完了」をクリックします。
コピー元も同じく、「区切り位置」で元に戻します。ただし、これは一列に限ります。

他にも同種の特殊なテクニックもありますし、概ね、マクロ化も可能ですが、こういうことは、めったに必要ありません。実は、左側の数式は、右の数式と等価ですから、数式はひとつだけでよいわけです。

 A1方式  R1C1方式
--------------------------
=B1+C1   =RC[1]+RC[2]
=B2+C2   =RC[1]+RC[2]
=B3+C3   =RC[1]+RC[2]

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのか...続きを読む

Q入力セルが空白の時 隣りと隣のセル(こちらも入力セル)を空白にできるかどうか?

こういったことできないでしょうか。

 A1  B2  C3
9:00  ~  10:00 と場合に

A1とC3に直接値を入力しています。

A1セルに値がはいらないとき B2のチルダも C3の値も 空白になってくれると
よいなと思うのですが 良い方法はありますでしょうか。

ご存知の方ご教示いただければ助かります。

Aベストアンサー

こんばんは!

>C3のセルのことを B2に入力した式で
>管理できないかと思っているのですが・・・

関数では無理だと思います。
VBAになりますが一例です。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・C3セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("A1,C3")) Is Nothing Then Exit Sub
If Target.Count = 1 Then
With Target
If .Row = 1 Then
If .Value <> "" Then
If Range("C3") <> "" Then
Range("B2") = "~"
End If
Else
Range("B2,C3").ClearContents
End If
Else
If .Value <> "" Then
Range("B2") = "~"
Else
Range("B2").ClearContents
End If
End If
End With
End If
End Sub '//この行まで//

※ A1セルがC3セルより大きな値になった場合などの細かいエラー処理はしていません。

こんな感じをお望みなのでしょうか?m(_ _)m

こんばんは!

>C3のセルのことを B2に入力した式で
>管理できないかと思っているのですが・・・

関数では無理だと思います。
VBAになりますが一例です。

画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・C3セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("A1,C3")) ...続きを読む


人気Q&Aランキング