エクセルで表を作っていますが、マクロを使って、空白セルの左隣の値をコピーし、空白セルに貼り付けをしたいのですが、うまくいきませんでしたので、教えてください。

A 回答 (2件)

処理例を書いてい見ました。


空白セルを左のセルに置き換えたい範囲(連続範囲、飛び離れた範囲)を選択して実行します。
シートのコードウインドウに貼り付けます。 ご参考に。

Sub Okikae()
  Dim rg As Range              'セル
  For Each rg In Selection          '選択範囲での処理
    If rg.Column <> 1 Then         '1列目でなかったら
      If rg.Value = "" Then       '空白だったら
        rg.Value = rg.Offset(0, -1)  '左のセルと同じにする
      End If
    End If
  Next
End Sub
    • good
    • 0
この回答へのお礼

nishi6さん とても分かりやすい回答有難うございました。早速試してみます。

お礼日時:2001/11/06 13:00

例えばこんな感じでいいのでしょうか?



空白セルにカーソルがあるとして

sub temp()
 if activecell.value="" then
  activecell.value=activecell.offset(0,-1).value
 end if
end sub
    • good
    • 0
この回答へのお礼

urkさん 有難うございました。

お礼日時:2001/11/06 13:01

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

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

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

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

Qマクロ「A1の値は、セル範囲でA1:AB39の右2文字が YR と書いてあるセルの右隣の値」

よろしくお願いします
いつもgooの皆さんに大変お世話になっています
エクセルは2013です

マクロで
「A1の値は、セル範囲でA1:AB39の値(文字列)の右端2文字が YR と書いてあるセルの右隣の値」
はどういうコードになるでしょうか

例えば セル D10 の値(文字列)が、「2月合計yr」でしたら
セル A1 には 右隣のセル E10 の値を表示したいのです

右2文字は Ucase(Right(セル,2)) ですが
「セル範囲A1:AB39で、そのセルの右端2文字がYRと書いてあるセルの右隣のセル」を
探す方法が分かりません

Aベストアンサー

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c As Range
 With Range("A1:AB39")
 Set c = .Find( _
  What:="*yr", _
  After:=Range("A1"), _
  LookIn:=xlValues, _
  LookAt:=xlWhole, _
  SearchOrder:=xlByRows, _
  MatchCase:=False, _
  MatchByte:=False)
    If Not c Is Nothing Then
     c.Offset(, 1).Value = Range("A1").Value
    End If
 End With
End Sub
'//

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c...続きを読む

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同じブック内の、あるシートの表を別シートにリンク貼り付けしたのですが、貼り付けた側の空白のセルに0がついてしまう

エクセル97にて、
同じブック内の、あるシートの表を別シートに
「リンク貼り付け」したのですが、貼り付けた側の
空白の部分に「0」(日付の場合は「00/1/0」「1900/1/0」)がついてしまうのですが、
空白のままにする方法はありますでしょうか?

Aベストアンサー

ツール→オプション→表示→ゼロ値のチェックをはずしてみてください。
それで0が消えると思います。

QExcel マクロで特定のセルに入っている数値を参考に空白セルにコピーする方法

Excelのマクロ初心者です。
以下のような表がある時に(D列の数値ー1)行分を
A列~C列の空白セルに上段の文字をコピーしたい場合のマクロを教えてください。
(説明が下手ですみません…)

    A B C D E
1  あ  い  う  2 お
2            こ
3 さ  し  す  1 そ
4 た  ち  つ  3 と
5 の
6 ほ


マクロ実行後はこうなりたいです。

    A B C D E
1  あ  い  う  2 お
2 あ  い  う     こ
3 さ  し  す  1 そ
4 た  ち  つ  3 と
5 た  ち  つ   の
6 た  ち  つ ほ


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

Excelのマクロ初心者です。
以下のような表がある時に(D列の数値ー1)行分を
A列~C列の空白セルに上段の文字をコピーしたい場合のマクロを教えてください。
(説明が下手ですみません…)

    A B C D E
1  あ  い  う  2 お
2            こ
3 さ  し  す  1 そ
4 た  ち  つ  3 と
5 の
6 ...続きを読む

Aベストアンサー

#5の回答者です。
こういう場合、だいたい、回答者の一人が、業を煮やして、キメウチで作ってしまうケースが多いようです。しかし、今回も、こちらはコード見送りました。

言葉よりも、画像のほうが情報が速く正しく伝わりますから、一度、そういう説明の仕方も考えたほうがよいでしょうね。今回も画像を付けます。(ツールは、FastStones Capture for Windowを使用)

原則があって、各々の条件を導きだす方法のほうが楽ですね。

>Ð列の数値よりも空白かどうかを最優先する
 --空白でなかったらコピーをしない

>D1の数値が4だとしてもその下の段に1段しか空いていなければ1段のみのコピー
 --つまり画像の②のような場合は、コピーしない。
 ということになります。

◯画像では、行の終わりを取り入れて6行までとしました。
そうすると、余りがあっても、それもコピーしないとなります。

Q列の最大値の左隣のセルの値を取得したい

会社でメルマガの配信日ごとのクリック数を分析しています。
下記のように配信日とクリック数が書かれている「Sheet1」と
クリック数の順位・配信日を記述している「Sheet2」があります。
「Sheet2」のB列に「Sheet1」のクリック数の順位ごとに配信日を自動で表示させる方法はありますでしょうか?
Excel2000です。以上、よろしくお願いします。

"Sheet1"
   A     B
1 配信日   クリック数
2 20080101   10
3 20080201   20
4 20080301   30
5 20080401   25
6 20080501   15

"Sheet2"
  A    B
1 1位20080301
2 2位20080401
3 3位20080201
4 4位20080501
5 5位20080101

Aベストアンサー

同じクリック数があるという仮定を入れて少し複雑になっている。
例データ
Sheet1 A1:E7
A列   B列    C列  D列   E列
1配信日クリック数
220080101101016
320080201202023
420080301303011
520080401252512
620080501151515
720080502202014
D列は D2に =C2*10+(COUNTIF($C2:$C$7,C2))
式を下方向に式を複写。C2に10をかけているのは同じ値が9個まで以内と仮定になる。
E列は順位を出している。
式はE2に =RANK(D2,$D$2:$D$7)
式を下方向に複写。
ーーーー
Sheet2に行って
A2に
=INDEX(Sheet1!$A$1:$C$7,MATCH(ROW()-1,Sheet1!$E$1:$E$7,0),COLUMN()+1)
と入れて縦方向に式を複写
B2に A2の式を横方向に複写
B3:B7はB2の式を縦方向に式を複写
結果
2008030130
2008040125
2008020120
2008050220
2008050115
2008010110
ーー
こういうやり方を imogasi方式と自称している。
作業列を使うのですが、使わない式に比べ、何をしているかわかりやすいと思う。

同じクリック数があるという仮定を入れて少し複雑になっている。
例データ
Sheet1 A1:E7
A列   B列    C列  D列   E列
1配信日クリック数
220080101101016
320080201202023
420080301303011
520080401252512
620080501151515
720080502202014
D列は D2に =C2*10+(COUNTIF($C2:$C$7,C2))
式を下方向に式を複写。C2に10をかけているのは同じ値が9個まで以内と仮定になる。
E列は順位を出している。
式はE2に =RANK(D2,$D$2:$D$7)
式を下方向に複写。
ーーーー
Sheet2に行って
...続きを読む


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

人気Q&Aランキング

おすすめ情報