VBA初心者です。

c列に入力されている「01-」~「09-」までのうち
「02-」で始まるものを探し、その行のA・B・C列を削除し
上につめたいのですが、うまくいきません。

「02-」の後には何文字か入っています(例:02-AN003)
以下のように記述したのですが。。。
VBA初心者ですのでどなたかご教授下さい。

Sub sakujyo()

Dim i As Long
For i = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
If Range("C" & i).Value = "02-*" Then Rows(i).Delete Shift:=xlUp
Next i

End Sub

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

A 回答 (2件)

 


●Like演算子を使う

Sub sakujyo()
 Dim i As Long
 For i = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
  If Range("C" & i).Value Like "02-*" Then Rows(i).Delete
 Next i
End Sub


●Instr関数を使う

If InStr(Range("C" & i).Value, "02-") > 0 Then Rows(i).Delete Shift:=xlUp

 
    • good
    • 0
この回答へのお礼

出来ました! 
Like演算子ですね。
調べて理解しました。ありがとうございました。

お礼日時:2009/05/12 23:25

>その行のA・B・C列を削除し,上につめたいのですが、うまくいきません


手操作でも出来ない原理的に出来ないことを書いていませんか。
A・B・C列しかないデータなのか。不用意にA・B・C列と書かないこと。
列の1部列と見てしまうよ。
ーー
やり方のヒントは
(1)C列1セルづつINSTR関数で聞いていって見つける
(2)C列でFind、FindNextメソッドを使う。初心者には向かない。
(3)セルの値そっくりの文字列を探すのでなく「含む」になるようだが、Like演算子を使う。Googleでも検索して勉強のこと)
>If Range("C" & i).Value = "02-*" は経験の無いものの、無茶なやり方。
Instr関数なら
例データ
asder
adfert
asdcv

Sub test01()
For i = 1 To 3
p = InStr(Cells(i, "A"), "er")
MsgBox p
Next i
End Sub
で可能。4,4,0になる。
>02-」で始まるものとは、先頭から02-なら、Left(Cells(i,"C"),3)="02-j"で良い。
    • good
    • 0

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

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

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

Q「仲良しであること」を表す漢字1文字

タイトル通り、「仲良しであること」を1文字で表せる漢字を探しています。この場合の「仲良し」は男女間なのですが、「恋人同士として仲良し」なのではなく「友達として、チームとして仲良し」を意味します。ちなみにこの漢字1文字は、オリジナルTシャツのデザインにする予定です。

自分なりに考えてみると「和」くらいしか思いつかないのですが、それではありきたりなのでもう少しひねった漢字にしたいと思っています。他に「懇ろ」も思いつきましたが(「ろ」は入れません)、これだと「友達として仲良し」ではなくなってしまうなぁ、と思いました。

何かいい漢字がありましたら、あるいは意味から漢字を調べられるようなサイトがありましたら、ぜひ教えてください。よろしくお願いします。

Aベストアンサー

・藹(和気藹々)

・欒(団欒)

・間を○で囲って「仲間」をイメージ

・良を○で囲って「仲が良い」をイメージ

Qエクセルのマクロ Range("A1").End(xlDown).rowで列を削除

A列の一番下のデータの次の行から
F列の一番下のデータの行まで削除したいのですが
Rows(" & Range("A1").End(xlDown).row+1 & ":" & Range("F1").End(xlDown).Row & ").Delete Shift:=xlUp
でうまくいきません
どうすればいいのですか?

Aベストアンサー

Rows(Range("A1").End(xlDown).Row + 1 & ":" & Range("F1").End(xlDown).Row).Delete Shift:=xlUp
でどうでしょうか。
Rows()内の最初と最後の("&~&")が不用かと…。

ちなみにxlDownだと途中に空欄があった場合、最下行は取得できません。
xlUpを使ったほうがより確実だと思いますよ。

Aend = Cells(Rows.Count, 1).End(xlUp).Row + 1
Fend = Cells(Rows.Count, 6).End(xlUp).Row
If Aend <= Fend Then Rows(Aend & ":" & Fend).Delete Shift:=xlUp

Q漢字3文字の名前

もうすぐ女の子を出産予定です。
漢字3文字の名前を考え中ですが、3文字の名前って、書くときに長すぎたりバランスが取りにくかったりするものでしょうか。
ちなみに苗字は漢字2文字です。
私自身は漢字2文字の名前なので良くわからなくて・・・。
ご自身のお名前が漢字3文字の方、お子さんのお名前が漢字3文字の方、よければコメントをお願いします♪

Aベストアンサー

私自身が三文字です。

苗字や、三つの漢字の画数にもよりますが、
一般的に三文字の漢字で特に不都合を感じたことはありません。
バランスもとりにくいと思ったことはないです。

ただ子供の頃から、もし将来結婚して苗字が変わるなら、
読みが三文字で漢字も三文字(例えば佐々木さんとか)の人とは
結婚したくないな~と、思っていました。苗字も名前もすべて一文字
ずつ書くのは、何となくですが、当て字というか、
ヨロシクを夜露四苦と書くようなイメージがあって・・・
(完全に主観的な感想です^^;)

以外に便利だと思うのは、たくさんの名前の中から自分の
名前を探さなければならないような場面(学生時代等はよく
ありました。名簿とか。)で、三文字の名前って、
すごく探しやすくて良かったです(笑)。
二文字の子が多い中で、三文字が並ぶとぱっと目が行きますから。

QVBA (Row とRowsの違いについて)

いつもお世話になっております。

VBA初心者ですが、RowとRowsの違いについて今一つ分かりません。
添付ファイルのように、A2:A25まで数字を入れた表を作って、今ある知識で行数をカウントするコードをいくつか書いてみました。

test1:A2から始まる表を構成するトータル行数を返す。
test2:??
test3:A2から始まる表の最終行番号を返す。
test4:test1と同じ
test5:???

(1)test2、5は同じ内容のコードになると思いますが・・結果の『2』は何を意味しているのか分かりません。
(2)RowとRowsの違いは簡単に言うとどういう事でしょうか?

まとまりの無い文章で申し訳ありませんが、よろしくお願いいたします。

Sub test1()
Cells(2, 2).Value = Cells(2, 1).CurrentRegion.Rows.Count
End Sub

Sub test2()
Cells(2, 3).Value = Cells(2, 1).CurrentRegion.Row
End Sub

Sub test3()
Cells(2, 4).Value = Cells(2, 1).End(xlDown).Row
End Sub

Sub test4()
Cells(2, 5).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Rows.Count
End Sub

Sub test5()
Cells(2, 6).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Row
End Sub

いつもお世話になっております。

VBA初心者ですが、RowとRowsの違いについて今一つ分かりません。
添付ファイルのように、A2:A25まで数字を入れた表を作って、今ある知識で行数をカウントするコードをいくつか書いてみました。

test1:A2から始まる表を構成するトータル行数を返す。
test2:??
test3:A2から始まる表の最終行番号を返す。
test4:test1と同じ
test5:???

(1)test2、5は同じ内容のコードになると思いますが・・結果の『2』は何を意味しているのか分かりません。
(2)RowとRowsの違いは簡単...続きを読む

Aベストアンサー

Range.Row プロパティをヘルプで調べると、「対象セル範囲の最初の領域の先頭行の番号を返します」と書いてあります。「最初の領域」というのは、例えば union(range("b2:d4"),range("f3:h5")) のような複数の領域を合わせた領域のうち、合わせる前の最初の領域ということです。つまりこの領域の Row プロパティである union(range("b2:d4"),range("f3:h5")).Row は、「b2」の「2」を返すこととなります。

上のプロパティが返すのは行番号という Long 型の数値であって、行というオブジェクトではありません。しかし一方では、行というオブジェクトを Row オブジェクトと呼ぶので、初級者の方には紛らわしいと感じられるかもしれません。VBA が上手になってくれば、当たり前のことなのですがね。

オブジェクトの集まりをコレクションと言います。コレクションも 1 つのオブジェクトです。

あるコレクションが全て同じ種類のオブジェクトだけでできているという場合は、原則としては、要素となっているオブジェクト名の複数形をそのコレクションの名前にします(ただし名前が単数・複数の関係になっていない親子のオブジェクトも存在します)。つまり Row オブジェクトだけでできているコレクションは、Rows オブジェクトあるいは Rows コレクションと呼びます。

他に、Workbook オブジェクトと Workbooks コレクション、Shape オブジェクトと Shapes コレクション等々も、同様な関係です。

Range.Rows プロパティは、その Range に含まれる全ての行の集まり、即ち、その Range での Rows オブジェクトを返すプロパティです。

Range.Row は 2 などの「値」を返しますが、Range.Rows は行という「オブジェクト(への参照)」を返すのですね。

Rows オブジェクトの要素である各 Row オブジェクトは、インデックス(番号)によって特定されます。つまり、ある Range に含まれる 1 番目、2 番目、3 番目、…の Row オブジェクトは、コレクションに番号を付けて、Range.Rows(1)、Range.Rows(2)、Range.Rows(3)、…というプロパティにより、返されます。複数形のオブジェクト名にインデックスを付けることで、単数のオブジェクトを表すことになります。

Range.Row プロパティをヘルプで調べると、「対象セル範囲の最初の領域の先頭行の番号を返します」と書いてあります。「最初の領域」というのは、例えば union(range("b2:d4"),range("f3:h5")) のような複数の領域を合わせた領域のうち、合わせる前の最初の領域ということです。つまりこの領域の Row プロパティである union(range("b2:d4"),range("f3:h5")).Row は、「b2」の「2」を返すこととなります。

上のプロパティが返すのは行番号という Long 型の数値であって、行というオブジェクトではありません。し...続きを読む

Qこの文字(アート・デザイン)の名称を教えてください。

5年ほど前、軽井沢のプリンスショッピングプラザ(アウトレット)で学生風の方が露天商のような形で商売をしていました。商品は客の名前をデザインされたアートな文字で書いてくれるというものでした。情報が少なくて申し訳ないのですが、知っている方がおりましたら教えてください。
【その文字について】
・幅5cm程度のスポンジのようなものに原色系の顔料を染みこませて、虹のような色遣いで書く。
・基本的にはアルファベットであるが、漢字でも書いてくれるようだった。
・文字の一つ一つに植物や鳥が描かれている(熱帯系のデザインに見える)。
・1枚1000円ぐらいで書いてくれた。
・とてもおめでたい(幸運を呼ぶ)文字らしい。

参考になるサイト等ありましたらご紹介ください。よろしくお願いいたします。

Aベストアンサー

No.1の回答者です。

違かったですか…。他には知らないですね。すみません。

今回は、

>当時「花文字」以外の呼び名を聞いたような気がしているのですが・・・

の補足回答です。質問の回答ではないので、あしからず。

「花文字」という呼び名のほかには、
「花鳥文字」「吉祥花文字」「開運風水花文字」「花鳥書法」「虹書法」などあるようです。(種類が違うのかもしれませんが…)


そういえば、

>学生風の方が露天商のような形で商売をしていました

ということなのですが、
その学生風の人のオリジナルという可能性もあるのでは?とも思ったんですが。


最後に、ほかに「花文字」に関するサイトを見つけたので紹介しておきます。
もはや関係のないものなので、参考という程度に。

http://www.asia-jps.com/hana01.html

http://kotobukimiyuki.at.infoseek.co.jp/miyukiss/hanamoji.jpg

http://www.d-word.jp/pdt_related1/

http://www.giwado.com/order/kachomoji.html

No.1の回答者です。

違かったですか…。他には知らないですね。すみません。

今回は、

>当時「花文字」以外の呼び名を聞いたような気がしているのですが・・・

の補足回答です。質問の回答ではないので、あしからず。

「花文字」という呼び名のほかには、
「花鳥文字」「吉祥花文字」「開運風水花文字」「花鳥書法」「虹書法」などあるようです。(種類が違うのかもしれませんが…)


そういえば、

>学生風の方が露天商のような形で商売をしていました

ということなのですが、
その学...続きを読む

Q標準モジュールで 『Sub test(ByVal Target As Range)』は動かない?

選択されている複数のアドレスが知りたいので
標準モジュールに
Sub test(ByVal Target As Range)
Debug.Print Target.Address
End Sub
と書きました。

しかしF5ボタンを押しても何も起こりません。
デバッグ→コンパイルをしてもエラーになりません。

シートのイベントプロシージャーではなく
標準モジュールにした理由は
イベント発生時ではなく、任意で起動させたいためです。

ためしに、
Sub test(ByVal Target As Range)
Debug.Print Target.Address
End Sub
の下に、

Sub test2()
Call test
End Sub

と書いたら、
「引数は省略できません。」
というエラーになりました。

何がダメなのかわかりません。
ご教授よろしくお願い致します。

Aベストアンサー

こんばんは。

今回は、初歩的なことですが、段階を経たほうがよいと思います。つまみ食いのようなことをしても、なかなか、VBAもWSHも覚えられないと思います。しかし、今回のように単発では、こちらの書いていることはほとんど分かってもらえないと思います。

今回は、サブルーチンのコードですが、サブルーチンを書くということは、それなりに、その前段階を理解していなくてはなりません。イベント・ドリブン型とは関係がありません。

それと、Target は、予約語ではありませんが、イベント・ドリブン型の引数に使われているものですから、他の語を使ったほうがよいです。それを許していると、自分ですらコードが読めなくなっていくはずです。

今回のようなコードを実際に書くことはありえませんが、ByVal キーワードは、入れるのと入れないのでは違いがありますが、Test1 側で、引数のデータ型が決めてあれば、入れなくても構わないです。Debug.Print としてしまったら、さっぱり、その意味が見えないでしょうけれども……。

F5を押しても、サブルーチンは呼び出さないと動きません。
それに、呼び出す場合は、引数を入れなければなりません。

'-------------------------------------------

Sub Test1()
Dim c As Range  '←これがあるので、ByVal は不要
For Each c In Range("A1:A10")
 Call Test2(c)
Next c
End Sub

'サブルーチン(Target という名称は使わない)
Sub Test2(rng As Range)
  Debug.Print rng.Address
  'Debug.Print では、良く意味が分からないはずです。
  'Range オブジェクトを引数にしたら、いろんな使い方がある
End Sub

'-------------------------------------------

こんばんは。

今回は、初歩的なことですが、段階を経たほうがよいと思います。つまみ食いのようなことをしても、なかなか、VBAもWSHも覚えられないと思います。しかし、今回のように単発では、こちらの書いていることはほとんど分かってもらえないと思います。

今回は、サブルーチンのコードですが、サブルーチンを書くということは、それなりに、その前段階を理解していなくてはなりません。イベント・ドリブン型とは関係がありません。

それと、Target は、予約語ではありませんが、イベント・ドリブン...続きを読む

Q漢字の他に、漢字のように何万字もあるような複雑な文字ってあるんでしょう

漢字の他に、漢字のように何万字もあるような複雑な文字ってあるんでしょうか?

やっぱり、漢字が世界で最も文字数の多い文字なんでしょうか?

Aベストアンサー

 文字には大きく分けて二種類あります。音(意味がない)によるものと語によるものです。世界の文字を全部勉強した訳ではありませんが、文字組織からだいたいの見当はつきます。

(1)音をあらわすもの。
  音素文字、いわゆるアルファベットはその例。母音を表す文字と子音を表す文字で総数50以下。

  音節文字、日本語の仮名はその例。総数は多くても150以下

(2)語を表すもの。表語文字、漢字はその例。1994年の『中華字海』では、85,568字。日本の常用でも2,000字程度。

>>やっぱり、漢字が世界で最も文字数の多い文字なんでしょうか?

 多分そうだろうと思います。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97

Q質問番号C1 C2 C3 C4 C5 C6 C7 C8 C9 平均

質問番号C1 C2 C3 C4 C5 C6 C7 C8 C9 平均
       1 1 2 3 4 5 3 8 7 5 4.2
エクセル2003でこのような質問表を作っています。
条件付書式で、一番大きい数と、一番小さい数に色をつけたいのですが、
そのような条件が見当たりません。
どうすればいいのでしょうか?
また、2007ならば可能なのでしょうか?

Aベストアンサー

条件付書式で、
「セルの値が」―「次の値に等しい」―「=MIN($C$1:$C$9)」
で、「書式設定」で色選択、
「追加」
「セルの値が」―「次の値に等しい」―「=MAX($C$1:$C$9)」
で、「書式設定」で色選択、
「OK」

Qロゴや文字のデザイン。

漢字やひらがな、英語などデザイン風に少しデフォルメして書きたいのですがどのようにかけばかっこよく見えるでしょうか。
よく、路上の壁面に書いてあるような文字の書き方(特徴)などわかるかたおしえてください。
文字がなんて書いてあるかが少しわかんないくらいにしたいのですが。
ロゴのようなものでも良いです。
最近の10代20代くらいの人が好きそうな感じで…
よろしくおねがいします。

Aベストアンサー

グラフィティ(らくがきと言う意味で)と呼ばれる文字ですね。かっこ良く、なんて書いてあるかがわかんないくらいの文字が書けるように、みんなひたすら紙に書いて練習しているのだと思います。

当たり前ですが、シャッターやコンクリの塀、人の迷惑になる場所に書くのは犯罪ですので、そういった場所に書くのは絶対にやめましょう。

こんなところとかご参考に
http://www.11-d.nu/

以下のサイトからは、PLAY→好きな英字入力で作れます。

参考URL:http://www.mindgem.nu/graffiti.html

Qエクセル =INDIRECT("Sheet"&ROW(A2)&"A1")

たびたび恐縮です。

別に質問したINDIRECT("Sheet"&ROW(A2)&"A1")について、概要は理解できました。(この式の場合、Sheet2のA1の値を表示させるものだと思います。)

よく理解していない点
*””位置、なぜ?
*&は文字列をつなぐという意味でよいのか?
*&の位置、なぜ?

多分、最初の”と最後の"が1組で中間の2つが別の1組と思います。とすると、なぜ中間部が"&---&"と表現しなければいけないのかがよく解りません。せめて、"&---"&なら理解できるような気がします。

お願いいたします。

Aベストアンサー

>*&は文字列をつなぐという意味でよいのか?

そうです。
文字の連結を行います。

>なぜ中間部が"&---&"と表現しなければいけないのかが

(! が抜けていますが・・・)
"Sheet" と "!A1" は、文字として記入されているので、""で括る必要があります。
ROW(A2) は、関数なので、"ROW(A2)" としてしまったら、ROW(A2) と言う関数は機能しません。
そうなると、INDIRECT("SheetROW(A2)!A1")という形になり、希望の動作になりません。

"Sheet"(文字)& ROW(A2)(関数)& "!A1"(文字)
"Sheet"(文字)& 2(関数の戻り値) & "!A1"(文字)
最終的に "Sheet2!A1" という文字が INDIRECT で処理されます。


人気Q&Aランキング

おすすめ情報