- ベストアンサー
excel2003 マクロ 複数セルに文字を追記
オートフィルタ後、E列の文字が入力されているセルにのみ 頭に「花」という文字をいれたい。 ということをしたいです。 もともと入っている文字に追記をしたいのですが どうすればよいでしょうか? オートフィルタした値は、すべて同じではないです。 アドバイスお願いします。 Sub オートフィルタ後花をつける() moji = "花" With Worksheets("Sheet1") .Range("E3",Range("E65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Select Selection.Value = moji & ActiveCell.Value←これではだめですよね・・・ End With End Sub
- mimomosan
- お礼率59% (49/83)
- その他MS Office製品
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
オートフィルタで絞り込み表示されているE列にだけ「花」を付けるなら以下も試してみてください Sub Macro2() Dim r As Range On Error GoTo end0 For Each r In Range("E3:E65536").SpecialCells(xlCellTypeConstants, 3) If r.EntireRow.Hidden = False Then r.Value = "花" & r.Value End If Next r end0: End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 オートフィルタを使うなら、このようにします。 ただし、オートフィルタの場合は、1行目は除外します。 >Selection.Value = moji & ActiveCell.Value←これではだめですよね・・・ 何か方法はあるような気がしますが、思いつきません。 '------------------------------------------- Sub Test1() Dim i As Long Const strMOJI As String = "花" With ActiveSheet .AutoFilterMode = False With Range("A1").CurrentRegion .AutoFilter Field:=5, Criteria1:="<>" End With Application.ScreenUpdating = False 'AutoFilter.Range で範囲を取得 With .AutoFilter.Range.Columns(5) 'E列 For i = 2 To .Rows.Count If .Cells(i, 1).EntireRow.Hidden = False Then .Cells(i, 1).Value = strMOJI & .Cells(i, 1).Value End If Next i End With '.AutoFilterMode = False 'オートフィルタを解除 Application.ScreenUpdating = True End With End Sub
お礼
ご回答ありがとうございます。 フィルタをどう適用するかわからないのですが・・・ 読み解いてみます。
関連するQ&A
- 可視セルを対象としたcountifができるでしょうか?
オートフィルターで表示してある所だけを対象としてcountifで対象 値の数を出したいのでのですが できますでしょうか? Sub countif() Range("C1") = Application.WorksheetFunction.countif(Range("A:A").SpecialCells(xlCellTypeVisible), Range("B1")) End Sub イメージはこんな感じなのですがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excelで複数条件で抽出する
excel VBAで質問です。(初心者レベルです) A列からZ列までデータがあり、オートフィルタでE列で条件に当てはまるものと、E列では条件外だが、Y列では条件に当てはまるものを別シートに抽出したいと思っています。 Sub Macro1() With Worksheets("Sheet1") .Range("A1").AutoFilter _ Field:=5, Criteria1:="*条件*" .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("Sheet2").Range("A1") End With End Sub Fieldを変えて、E列、Y列それぞれはできるのですが、データが重複してしまいます。 重複分を削除するため、セル入力で連番を降って、重複するものを削除しようとしましたがうまくいかず。 なにかいい方法はないでしょうか。
- ベストアンサー
- オフィス系ソフト
- セルの中の改行された文字をひとつづつ取得したい
図のように A1には「あ」「い」「う」が改行されて入っています。 Sub test() Dim moji(3) As String moji(1) = Range("a1").Value moji(2) = Range("a1").Value moji(3) = Range("a1").Value End Sub というコードを書いた時、 moji(1) ="あ" moji(2) ="い" moji(3) = "う" としたいのですが すべて"あいう"になってしまいます。 実現させるにはどうすればいいでしょう? アドバイスよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 実行時エラー1004空白セルを上に詰める
よろしくお願いします いろいろ試しましたが解決できませんでした。 Private Sub CommandButton1_Click() With Worksheets("Sheet1") For r = 2 To .Cells(Rows.Count, "C").End(xlUp).Row If .Cells(r, "C").Value = 提出先.Value Then Me.提出先.Value = "" .Cells(r, "C").Value = "" Else End If Next r .Range("J3").Value = "" ’下記の構文でエラーが出ます ’実行時エラー1004 ’アプリケーション定義またはオブジェクト定義のエラーです .Range(Range("C2"), Cells.SpecialCells(xlCellTypeLastCell)).SpecialCells (xlCellTypeBlanks).Delete Shift:=xlUp End With End Sub
- ベストアンサー
- Visual Basic
- Excelのマクロについて教えてください。
Excelのマクロについて教えてください。 下記のマクロがあります。 With Range("A" & Rows.Count).End(xlUp) .EntireRow.Copy .Offset(1) .Offset(1).EntireRow.SpecialCells(xlCellTypeConstants).ClearContents .Offset(1).Value = .Value + 1 End With 実際にデータが入っているのはA列~E列までで .EntireRow(行全体)ではなく A?:E? と範囲を指定して上記を実行させたいのですが どのように変更するといいでしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAで列が可変のオートフィルの実装
元となるSheet1のR列を「Sheet1~3」以外のシートの名前で オートフィルターさせてその内容をコピーし、数式を代入させたあと、連続データをEの列の最終セルまで 連続させてコピーするという下記のVBAを実装しました・・・が 連続データさせるEの列が1つしかなかった場合、連続データできないのでエラーが起きてしまします ですのでそれは無視してよいと単純に「On Error Resume Next」で処理しちゃってます でもこれでは、あまり良くない処理のような気がするのですが・・・ 連続データ出来ない場合は、1つのセルに数式を代入するだけでおしまい というプログラム処理はどのようにやればいいのでしょうか? ' オートフィルター For Each sh In Worksheets If sh.Name <> "Sheet1" And sh.Name <> "Sheet2" And sh.Name <> "Sheet3" Then Dim Filtarget As Range Dim Maction As Range 'コピーの開始する場所 Set Filtarget = Sheets(sh.Name).Range("A4") Set Maction = Sheets(sh.Name).Range("W4") Set Fills = Sheets(sh.Name).Range("X4") With Sheets("Sheet1").Range("R3") .AutoFilter Field:=18, Criteria1:=sh.Name .CurrentRegion.Copy With Worksheets.Add .Paste .Range("1:3").Delete .UsedRange.Copy Filtarget .Range("X1").Formula = "=E1/W1" .Range("M1:M" & Cells(Rows.Count, 13).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Maction .Range("X1").AutoFill Destination:=Range("X1:X" & Cells(Rows.Count, 5).End(xlUp).Row).SpecialCells(xlCellTypeVisible) On Error Resume Next .Range("X1:X" & Cells(Rows.Count, 5).End(xlUp).Row).SpecialCells(xlCellTypeVisible).NumberFormatLocal = "\#,##0;\-#,##0" .Range("X1:X" & Cells(Rows.Count, 5).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Fills Application.DisplayAlerts = False .Delete Application.DisplayAlerts = True End With .AutoFilter Field:=18 End With End If Next 以上、よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- Excel VBAにて、SpecialCells(xlCellTypeVisible) に関する質問
Excel VBAにて、SpecialCells(xlCellTypeVisible) に関する質問です。 セル ("A1:B7")に表があります。 a b 1 1 1 1 2 2 2 2 3 3 3 3 下記のVBAにて、temp2の値が、1となります。これが分かりません。 当方、欲しいのは、オートフィルタ後の見えている行の数です。 temp1=6は、オートフィルタで、選択されたセルs+ヘッダの計6こということで理解しています。 temp3=2は、列の数として、合っています。 Sub Macro1() Dim aa As Range Set aa = Range("A1:B7") aa.AutoFilter Field:=2, Criteria1:="2" temp1 = aa.SpecialCells(xlCellTypeVisible).Cells.Count 'temp1=6 temp2 = aa.SpecialCells(xlCellTypeVisible).Rows.Count 'temp2=1 temp3 = aa.SpecialCells(xlCellTypeVisible).Columns.Count 'temp3=2 End Sub 考え方として、間違ってはいないと思うのですが、行の数を求めるには、どのようにすれば良いでしょうか?
- ベストアンサー
- オフィス系ソフト
- マクロの質問です。下記の式があるのですが、コピーしたい、セルには、文字
マクロの質問です。下記の式があるのですが、コピーしたい、セルには、文字や計算式、又は他のセルから参照させてる物もあるので、張り付けたものに、エラーが数多く表示されるのですが、 コピー元の表示されてる文字を 張り付けることは、できるのでしょうか、 よろしくお願いします。 Sub 給与支払一覧() Application.ScreenUpdating = False Dim Sh As Worksheet For Each Sh In Worksheets If Sh.Name <> "給与支払一覧" And Sh.Name Like "Sheet*" Then With Worksheets("給与支払一覧") If Sh.Range("I14").Value > 0 Then With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) Sh.Range("O2:X14").Copy .Cells(1) .Resize(6, 10).Value = Sh.Range("O2:X14").Value End With End If End With End If Next Sh Set Sh = Nothing End Sub
- ベストアンサー
- オフィス系ソフト
- Excel2007で困ってます1
全くわからなくてお手上げ状態です。誰か助けて下さい。 Sub test1() Range("O4:O1012").Value = Range("O3:O1011").Value End Sub [("O3:O1011")には関数も入ってるので値だけを("O4:O1012")に入れて、1行ずらした形にします] Sub test2() Range("O3").Value = Selection ActiveCell.Offset(1).ActivateEnd Sub [test1で空いたセルO3に、選択されたE3の値を入れまして、E4、E5、E6、…と移動してはO3に入れていきます。] Sub test3() Range("X5").Value = Selection ActiveCell.Offset(1).ActivateEnd Sub [test2でE3から始まる値を1つずつO3に入れると、それに伴って、セルC3の値をX5に1つずつ入れてはC4、C5、C6、…と移動してX5に入れていきます。] ……Excel2007で困ってます2に続きます……
- 締切済み
- Excel(エクセル)
- マクロ 特定のセル値を「含む」にしたいです。
f21の値をf21の値を「含む」にしたいのですが どのようにしたらよいでしょうか。 宜しくお願いいたします。 Sub オートフィルターによる抽出() Dim myName As String myName = Range("f21").Value If myName = "" Then MsgBox "担任を入力してください。" Else Range("a22").AutoFilter Field:=6, Criteria1:=myName End If End Sub
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます! オートフィルタの仕様にほんっとにイライラして 試行錯誤の上、質問で上げさせて頂いたのをやっとこさ作りました。 自分で作っておいてなんですが、絶対いつか、不具合でそうだな・・・ の不安がぬぐえませんでした。 zap35さんの記述なら あらっ、いいですね~100%です!
補足
すみません。 お分かりになったらご回答ください。。。 上で、すでに「花」が付いているセルには 「花」をつけない という風にするには、どうすればよいでしょうか? If の中にandで複数条件 にしても、どのように書けばよいのかわからなくて・・ (ワイルドカードを使うのでしょうか・・・) 初心者で申し訳ないのですが、よろしくお願いいたします。