忙しい現代人の腰&肩のお悩み対策!

先ほど、testシートのD列(D2以下)に値が入力されるとC列に計算式A列*B列が入っておりその答えが入力されます。
同時に、D列に値を入力するとC列に入力される値をその下の行のB列に自動反映させたいのです。

例D2=10.5  C2=10(A2)*5(B2) B3=C2の答えの50

の質問をさせていただきまして、以下の回答をいただいたのですが、すいません。
C2の値が変更になった場合に自動でB3の数字も変更したいのですが、今のままだとD2を入力しなおしてEnter押さないと変わってくれません。
もう一度教えてくださいませ。
宜しくお願いいたします。


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row > 1 Then
If .Value <> "" Then
.Offset(1, -2) = .Offset(, -1)
Else
.Offset(1, -2).ClearContents
End If
End If
End With
End Sub

A 回答 (2件)

こんばんは!



C列には数式が入っているのですよね?
結局A・B・D列のデータ変更があればマクロが実行されれば良い!という解釈です。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A,B:B,D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
Application.EnableEvents = False
If .Column = 4 Then
.Offset(1, -2) = .Offset(, -1)
ElseIf .Value <> "" Then
Cells(.Row + 1, "B") = Cells(.Row, "C")
End If
Application.EnableEvents = True
End With
End Sub

としたらどうなりますか?m(_ _)m
    • good
    • 0
この回答へのお礼

こんばんは!!!
早速ご回答いただきましてありがとうございました!

なるほど!!そういう風に考えれば良いのですね!
ありがとうございます。
おかげ様で出来ました!
何度も申し訳ございません。ありがとうございました。

お礼日時:2017/08/18 22:13

どうやら、質問の意味を取り違えていたようですが、その例題から、そういうコードには解釈はできませんでしたね。

D列の入力と、C列との直接の関係はないように思います。

>例D2=10.5  C2=10(A2)*5(B2) B3=C2の答えの50
D2 は、文字でも何でもよいということのようですが。

ここの質問に提示されたコードの

 .Offset(1, -2) = .Offset(, -1)

以下のように変えれば済むのではありませんか?
ふたたび、勘違いしているかもしれませんが。

  .Offset(1, -2).Formula = "=R[-1]C[1]"

まあ、既存のものは、書き換えないといけませんが、まあ、どちらでもよい話かもしれませんが。
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございませんでした。
私の説明不足で勘違いさせてしましましてすいません・・・。

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

お礼日時:2017/08/22 09:17

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

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

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

Qvba:特定のセルに入力したと同時に隣のセルの値を特定のセルの下の行に自動入力したい

testシートのD列(D2以下)に値が入力されるとC列に計算式A列*B列が入っておりその答えが入力されます。
同時に、D列に値を入力するとC列に入力される値をその下の行のB列に自動反映させたいのです。

例D2=10.5  C2=10(A2)*5(B2) B3=C2の答えの50

教えていただきましたら幸いです。
よろしくお願いいたします。

Aベストアンサー

こんにちは!

すでに回答は出ていますので、参考程度で・・・
シートモジュールです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row > 1 Then
If .Value <> "" Then
.Offset(1, -2) = .Offset(, -1)
Else
.Offset(1, -2).ClearContents
End If
End If
End With
End Sub

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

Qvba 自動入力と自動削除

以下の内容のvbaを考えているのですが、煮詰まってしまいまして、、、
教えていただけたら幸いです。
宜しくお願いいたします。
------------
フォームのボタンを作成してクリックするとB列に”1”が入っているセルの隣のC列に”1”が自動入力されて、B列の1はクリアとなり、その後A1に入力されてる数字+1を計算して(Range("A1") = Range("A1") + 1)、A1がボタンクリック前は”2”だったらクリック後は”3”とA1に表示されます。

Aベストアンサー

こんにちは!

横からお邪魔します。
>フォームのボタンを作成して・・・

フォームコントロールのコマンドボタンとします。

Sub ボタン1_Click()
Dim i As Long, c As Range
Set c = Range("B:B").Find(what:=1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row
With Cells(i, "B")
If .Value = 1 Then
.Offset(, 1) = 1
.ClearContents
End If
End With
Next i
With Range("A1")
.Value = .Value + 1
End With
Else
MsgBox "該当データなし"
End If
End Sub

こんな感じで良いのでしょうか?m(_ _)m

こんにちは!

横からお邪魔します。
>フォームのボタンを作成して・・・

フォームコントロールのコマンドボタンとします。

Sub ボタン1_Click()
Dim i As Long, c As Range
Set c = Range("B:B").Find(what:=1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row
With Cells(i, "B")
If .Value = 1 Then
.Offset(, 1) = 1
...続きを読む

Qエクセルの使い方ってどこで習いましたか?

学校では習いませんよね?

Aベストアンサー

私も独学です。
解らないのはネット検索で結構見つかりますので助かっています。(笑)

Qエクセルの計算式で

C列にB÷Aの計算式が入っており表示は%表示です。
D列に104%以上なら○ 104%未満なら何も表示しない計算式を入れたいのですが、
計算式を教えて下さい。
またD列に100%を超える場合は○、超えない場合は何も表示しないような計算式は
どのような計算式になるのでしょうか。

よろしくお願いします。

Aベストアンサー

以下をDに入れる
=if(C1>=1.4,"○","")

OR


=IF(C1>1,"○","")

QEXCEL VBAでVLOOKUPを実行するとFALSEなのに、おかしな数字をもってきてしまいます。

EXCEL VBA 超初心者です。
以下のマクロを作成しました。VLOOKUPを使って、SHEET2にあるデータから、同じ№であるなら、SHEET1のE列に売上を持ってくるようにしたはずなのですが、一部うまく作動できずに困っています。
E17の黄色く塗りつぶした箇所ですが、SHEET2に№1523のデータがないので、0になるはずが、何故か№1515の値を持ってきてしまいます。
以下のマクロを実行した後、F列にVLOOKUPの関数を当ててみたところ、発覚しました。
E15やE22の緑の箇所は、データがないので、0になっているのでOKなのに、何故一部おかしい数値をもってくるのかわかりません。300くらいのデータの内、10件くらいは、おかしい数値をもってきてしまっており、結局VLOOKUPの関数を後から使って、データを修正するという手間になってしまっています。
マクロのどこがおかしいのでしょうか?
On Error Resume Nextの使い方が間違っていますか?
VLOOKUPでFALSEにしてあるのに訳が分からずおて上げ状態です。

わかりにくくて申し訳ありませんが、どなたか教えてください。
どうぞ宜しくお願い致します。

Sub 売上マクロ()

Dim i As Long
Dim Uriage As Long: Uriage = 0
Dim MyNum As Long
Dim MyData As Range

Set MyData = Worksheets(2).Range("A1").CurrentRegion

For i = 2 To Worksheets(1).Range("A1").End(xlDown).Row

MyNum = Worksheets(1).Cells(i, 3).Value

On Error Resume Next
Uriage = Application.WorksheetFunction.VLookup(MyNum, MyData, 3, False)
On Error GoTo 0
Worksheets(1).Cells(i, 5).Value = Uriage

Next i

End Sub

EXCEL VBA 超初心者です。
以下のマクロを作成しました。VLOOKUPを使って、SHEET2にあるデータから、同じ№であるなら、SHEET1のE列に売上を持ってくるようにしたはずなのですが、一部うまく作動できずに困っています。
E17の黄色く塗りつぶした箇所ですが、SHEET2に№1523のデータがないので、0になるはずが、何故か№1515の値を持ってきてしまいます。
以下のマクロを実行した後、F列にVLOOKUPの関数を当ててみたところ、発覚しました。
E15やE22の緑の箇所は、データがないので、0になっているのでOKなのに、...続きを読む

Aベストアンサー

本マクロでの状態ではVLOOKUPでエラー発生時(#N/Aのケース)で、そのまま続行しています。
そうすると、エラー発生時、Uriageにはなにもセットされない為、前回の値が残ります。
VLOOKUPの直前でUriageをクリアしてください。
----------------------------------
On Error Resume Next
Uriage = 0 '・・・①
Uriage = Application.WorksheetFunction.VLookup(MyNum, MyData, 3, False)
On Error GoTo 0
----------------------------------
①を追加してください。

QExcel 複数シートの統計データを作りたいのですが

質問させてください
Excel2007を使用しています。
五者択一の質問が87あり、それが120人分です。
人数分のシートを作り、87の質問をA列に並ばせ
B2からF2までを五者の表を作りました。
質問1の回答で1の人が何人。2の人が何人というふうに、120人分のデータを作りたいのです

何かできる方法はありませんか?

よろしくお願いします

Aベストアンサー

1で入れてるなら、統合機能とかでいいのでは?
120シートはちょっと大変かなぁ。普通に串刺しでもできそうですね。
ダミーシートで挟むという手があります。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12127000292

Q最近急にVBAの処理速度が遅くなりました。

こんにちは。以前こちらで横並びのデータを縦並びにしたいという質問に、VBAで解決して下さいました。
あの後順調にきていましたが、最近マクロを実行すると終わるまで15分ほどかかってしまいます。

以前教えていただいたコードはこちらです。

Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("仕入表")
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row
'//「在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去
If lastRow > 1 Then
Range(.Cells(2, "D"), .Cells(lastRow, "I")).ClearContents
End If
cnt = 1
For i = 3 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//「仕入表」Sheetの3行目~A列最終行まで
For j = 5 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2 '//E列~i行最終列まで2行毎★
If wS.Cells(i, j) <> 0 Then '//画像で「0」が表示されているので「0」以外を追加★
cnt = cnt + 1
'//最初のデータ行のみ「仕入表」Sheetの日付をD列に表示★
If j = 5 Then
.Cells(cnt, "D") = wS.Cells(i, "A")
End If
.Cells(cnt, "E") = wS.Cells(i, "B") '//B列に「コード」を表示
.Cells(cnt, "F") = wS.Cells(i, "C") '//F列に「商品名」を表示
.Cells(cnt, "G") = wS.Cells(i, "D") '//G列に「下代」を表示
.Cells(cnt, "H") = wS.Cells(i, j) '//H列に「色」を表示
.Cells(cnt, "I") = wS.Cells(i, j + 1) '//I列に「数」を表示
End If
Next j
Next i
'//最後にD列の表示形式(日付)を「在庫表」SheetのA3セルの書式に設定★
.Range("D:D").NumberFormatLocal = wS.Range("A3").NumberFormatLocal
End With
End Sub '//この行まで

補足ですが、仕入表に入力した情報を在庫表に転記させたいという質問でした。
終わりの行から続きを入力する形でよいのですが、”在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去”という処理が遅くさせてるということはありますか?


データが何千行にもなっています。
解決策があれば教えていただきたいです。よろしくお願いします。

こんにちは。以前こちらで横並びのデータを縦並びにしたいという質問に、VBAで解決して下さいました。
あの後順調にきていましたが、最近マクロを実行すると終わるまで15分ほどかかってしまいます。

以前教えていただいたコードはこちらです。

Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("仕入表")
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp)...続きを読む

Aベストアンサー

No.7、12の者です。

>03/17 17:02の補足について

コードのコピペや追加・削除を繰り返すうちに、必要な部分を消してしまったのだと思います。
現在実行しているコードをUPしましょう。^^

Qセル内の文字カウント

エクセル
セル内の文字カウントについて教えてください。セル内の文字カウントは、例えばA列の12行目であれば、
=LEN(A12)でカウントできるようなのですが、A列全体(一つ一つカウントしたい場合)手作業で、
入力するしかないのでしょうか?
=LEN(A1)...

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

Aベストアンサー

こんばんは!

極端にデータ数(行数)が多い場合はおススメしませんが・・・
表示したいセルに

=SUMPRODUCT(LEN(A1:A1000))

としてみてはどうでしょうか?m(_ _)m

QINDEX、MATCH関数での空欄を「0」ではなくそのまま空欄する式について

タイトルの通り、こちらの関数の式で空欄の時に0が返されるのをそのまま空欄処理をしたのですが式のどの部分に何を代入すれば良いのかが分かりません。
=IFERROR(INDEX(業務!$P$4:$T$10,MATCH('18'!$M20,業務!$A$4:$A$10,0),MATCH('18'!$M$18,業務!P$3:T$3,0)),"")

どなたか分かる方よろしくお願い致します。

Aベストアンサー

=IFERROR(INDEX(業務!$P$4:$T$10,MATCH('18'!$M20,業務!$A$4:$A$10,0),MATCH('18'!$M$18,業務!P$3:T$3,0))&"","")

QVBA初心者です。ファイルの検索、貼り付け方を教えてください。

はじめまして。
中小企業の工場で働いている者です。

伝票作成の効率化のため
選択したセルの部品のファイルを特定のフォルダから検索し、注文番号を張り付ける、
というマクロを作成したいと思うのですが、
VBA初心者の私にはプログラムを作れそうにありません。

誰かお力添え頂けませんでしょうか。


具体的には、まず、下のような、注文一覧表Ⅰがあり、
B列に顧客NO.、C列に注文番号、F列に部品番号を入力しています。

------A ---------- B---------------C------------D -------------E ----------- F
1---------------顧客NO.--------注文番号----------------------------------部品番号
2----------------aaa ------------注文あ-------------------------------------部品い
3----------------bbb-------------注文う------------------------------------部品え
4----------------ccc-------------注文お-------------------------------------部品か



F2の『部品い』のセルをクリックし、マクロのボタンを押すと
デスクトップ上の「伝票一覧Ⅱ」のショートカットファイル(伝票一覧Ⅱは会社のサーバー内のファイル)から『部品い』を含むエクセルファイルを検索し開く。

『部品い』のエクセルファイルは、Sheet1からSheet3まであり
(伝票一覧Ⅱのエクセルファイルは、必ず、Sheet1からSheet3まであります。)、
まず、Sheet3のL1のセルに
注文一覧表Ⅰの『部品い』と同じ行のC列の『注文あ』を張り付ける。

Sheet3
---A-B-C-D-E-F-G-H-I-J-K-------L
1---------------------------------注文あ

次に、Sheet2の「注文番号」と書いてあるセルの同列の1つ下の行のセルに
注文一覧表Ⅰの『部品い』と同じ行のC列の『注文あ』を張り付ける。
(若干、部品によって、様式(注文番号と書いている行列)が違います。)

Sheet2(例えば)
---A-B-C-D-E-F-G-H-I-J-------K
1------------------------------注文番号
2------------------------------注文あ

続いて、
Sheet1の「注文番号」と書いてあるセルの同行の1つ右の列のセルに
注文一覧表Ⅰの『部品い』と同じ行のC列の『注文あ』を張り付ける。
また、
「管理番号」と書いてあるセルの同行の2つ右のセルに、
注文一覧表Ⅰの『部品い』と同じ行のC列の『注文あ』を張り付ける。
また、
『顧客NO.』と書いてあるセルの同行の1つ右の列のセルに、
注文一覧表Ⅰの『部品い』と同じ行のB列の『aaa』を張り付ける。
 
Sheet1(例えば)
-----A--------------B--------C-------D-E-F-G-H-I-------------J------------K  
1--------------------------------------------------------------注文番号-----注文あ
2--管理番号----------------注文あ
3
4--顧客NO.-------aaa
            

次に、デスクトップ上の「伝票一覧Ⅲ」のショートカットファイル(伝票一覧Ⅲも会社のサーバー内のファイル)から『部品い』を含むファイル(DocuWorks文書 (.xdw))を検索。検索結果の表示。

以上になります。

その後、注文一覧表Ⅰの『部品え』、『部品か』と伝票を出していきますが、
間違えないように、1部品毎、プリントアウトしていく予定でおります。

よろしくお願い致します。

はじめまして。
中小企業の工場で働いている者です。

伝票作成の効率化のため
選択したセルの部品のファイルを特定のフォルダから検索し、注文番号を張り付ける、
というマクロを作成したいと思うのですが、
VBA初心者の私にはプログラムを作れそうにありません。

誰かお力添え頂けませんでしょうか。


具体的には、まず、下のような、注文一覧表Ⅰがあり、
B列に顧客NO.、C列に注文番号、F列に部品番号を入力しています。

------A ---------- B---------------C------------D -------------E --...続きを読む

Aベストアンサー

>VBA初心者の私にはプログラムを作れそうにありません。

無理です。
というのは初心者は構わないんですが、
富士山に最初から登りたいというような話で
まずは近所の丘に着実に登ることから始めなければなりません。

質問は多岐にわたって判らないことだらけですよね。
このような状態で教えてもらっても理解できることはありません。
表題が「ファイルの検索、貼り付け方を教えてください。」
であるにも関わらず、内容は複雑。

質問はひとつづつ、尚且つ8割り型判っているけど
あと少しが乗り越えられないということを
一点ずつ尋ねて解決するのが上達への早道です。

そこでまずは「ファイルを特定のフォルダから検索し」
この一点だけを見てみましょう。
これはDir()で実現出来ます。
まず excel vba dir でググりましょう。
使い方が沢山出てきますから、自分の環境で試すんです。
それだけだって最初は簡単には行かない事が多いもので
その時にわからない点を尋ねるんです。

何時間もかかる話を丸投げしてはいけません。
天は自ら助くる者を助くです。


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

人気Q&Aランキング