プロが教えるわが家の防犯対策術!

ExcelVBA  条件一致したら指定したセルの情報を一致した行の右側セルに自動入力する方法について

こんにちは 上記のようなプログラムを作りたいのですがアドバイスいただけないでしょうか

検索対象 セルE4 にAと入力



C列の検索を行い、E4のワードと一致したら
AA2に入力させている10を
一致したセルと同じ行のP列に入力させたい

下手な説明ですがご教授をお願いいたします

A 回答 (1件)

こんばんは!



>AA2に入力させている10を・・・
AA2セルが「10」にかかわらずAA2セルの値を表示するようにしてみました。

一例です。

Sub Sample1()
Dim FoundCell As Range, FirstCell As Range
Set FoundCell = Range("C:C").Find(what:=Range("E4"), LookIn:=xlValues, lookat:=xlWhole)
If Not FoundCell Is Nothing Then
Set FirstCell = FoundCell
GoTo 処理
Do
Set FoundCell = Range("C:C").FindNext(after:=FoundCell)
If FoundCell.Address = FirstCell.Address Then Exit Do
GoTo 処理
処理:
Cells(FoundCell.Row, "P") = Range("AA2")
Loop
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

早期対応ありがとうございました

お礼日時:2017/10/17 19:47

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

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

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

QExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

Aベストアンサー

#2さんと似たものですが・・・・参考にしてください。

Sub test001()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 2) = Cells(i, 1)
i = i + 1
Loop
End Sub

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

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エクセルでセルの条件が一致したら、値を挿入したい

エクセルで2つのシートの2つのセルの条件が一致したら、シート2の該当の部分をシート1に挿入したいのです。


Sheet1

A    B    C
1 社員A 100
2 社員B 200  
3  社員A 500

Sheet2

A    B    C
1 社員B 100  休み
2 社員B 700  勤務
3  社員A 100  夜勤

 
というような2つなシートがあり(実際には、セルの行数は3000行くらいあります)

Sheet1,Sheet2の比較をしてA列、B列の値が一緒である場合、シート1にシート2の該当部分を
C列に挿入したいのです。

たとえば、シート1のC列に数式をいれることになるかと思うのですが、
シート1とシート2を比較すると、
  シート1のA1・B1の【社員A 100】とシート2のA3・B3の【社員A 100】が一致しているので、シート2のC3の【夜勤】をシート1のC列のC1(該当する同じ行に挿入)に挿入したいのです。

どういった式をいれたらいいかわからないので、どなたかおしえていただけたら助かります。

よろしくお願い致します。 知恵をお貸し下さい。 非常にこまっております

エクセルで2つのシートの2つのセルの条件が一致したら、シート2の該当の部分をシート1に挿入したいのです。


Sheet1

A    B    C
1 社員A 100
2 社員B 200  
3  社員A 500

Sheet2

A    B    C
1 社員B 100  休み
2 社員B 700  勤務
3  社員A 100  夜勤

 
というような2つなシートがあり(実際には、セルの行数は3000行くらいあります)

Sheet1,Sheet2の比較をしてA列、B列...続きを読む

Aベストアンサー

シート1のD列を作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。

=A2&B2

シート2についてもD2セルに次の式を入力して下方にオートフィルドラッグします。

=A2&B2

その上でシート1のC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(OR(A2="",COUNTIF(Sheet2!D:D,D2)=0),"",INDEX(Sheet2!C:C,MATCH(D2,Sheet2!D:D,0)))

これでシート1のC列にはお望みのデータが表示されます。


人気Q&Aランキング