• ベストアンサー

EXCELの技に関する質問

EXCELに詳しい方がいらっしゃいましたら、すみませんがお教えください。 EXCELであるシートに以下のように一定ではない並びで「名前(年齢)」と複数のセルに入力してあったとします。 【BEFORE】 ヤマダ ハナコ(25)           ヤマダ タロウ(52) スズキ ジロウ(13) この時、この年齢に1歳加え、以下のような状態にしたいと思っています。 【AFTER】 ヤマダ ハナコ(26)           ヤマダ タロウ(53) スズキ ジロウ(14) そこで、上記のように3つくらいであれば普通に年齢を手補正すればいいのですが、数が大量にある時に、何か簡単にプラス1歳をしていく方法はありませんでしょうか? ややこしいことに、いろんな年齢の人がいるので置換を使っても手間がかかりますし、名前と年齢がひとつのセルに文字列として入っているうえ、列などが一定ではないので「=A2+1」といった簡単な数式を使うわけにもいきません。 (これは何かというと人名年齢入りの会社の組織図みたいなものなのです) どなた何か良いアイディアがありましたらどうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

同一セルに加算はVBAでないと難しいので一例です。 ※実施は、原シートを別シートにコピーしてコピー先のシートで実施してください。 (1)コピー先シートのシートタブ上で右クリック→コードの表示 (2)以下のコードを貼り付け、「セル範囲」の部分を書き換え (3)VBEを終了(右上枠の×キーまたは、Alt+F4キー押下) (4)ツール→マクロ→マクロ表示→「歳加算」を選択→OK Sub 歳加算() セル範囲 = "A1:J10" セル数 = Range(セル範囲).Cells.Count For i = 1 To セル数 x = InStr(1, Range(セル範囲).Cells(i), "(", vbTextCompare) y = InStr(1, Range(セル範囲).Cells(i), ")", vbTextCompare) If x > 0 Then 歳 = Mid(Range(セル範囲).Cells(i), x + 1, y - x - 1) + 1 Range(セル範囲).Cells(i) = Left(Range(セル範囲).Cells(i), x) & 歳 & ")" End If Next End Sub

kapekape
質問者

お礼

素晴らしいです!できました!本当にありがとうございます!

その他の回答 (1)

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.1

カッコ内の数字を抜き出して1加えること自体は難しくはありませんが、同じセルに置換して戻すんですよね。 後々を考えたらセルを分けて作り直した方がいいかも知れません。 関数でやるなら別シートに+1した組織図を丸々作ってしまって、全コピー、値のみ元のシートに貼り付ける方法など。 あとは考え方で、置換の繰り返しで、 9) → *) 、 8) → 9) 、 7) → 8) 、 6) → 7) 、 5) → 6) 、 4) → 5) 、 3) → 4) 、 2) → 3) 、 1) → 2) 、 0) → 1) の様に置換して、後は*を検索していくなどでしょうか?

関連するQ&A

  • エクセルの文字内の空白の削除

    EXCELの表の列に下記のようにカタカナで氏名が入っています。 ヤマダ タロウ ヤマダジロウ できれば、全て空白を詰めて下記のように修正したいのですが、エクセルの関数若しくはBVAでは可能でしょうか??trim関数は前後の空白だけ削除ですよね?? 宜しくお願いします ヤマダタロウ ヤマダジロウ

  • エクセルについて

    エクセルで住所録を作っているのですが、名前とフリガナを同じセルに入力していました。フリガナだけを横のセルに移動することは可能でしょうか      A             B 1山田 太郎 ヤマダ タロウ  2山田 花子 ヤマダ ハナコ    A | B 1山田 太郎 | ヤマダ 太郎 2山田 花子 | ヤマダ ハナコ 宜しくお願いします。

  • Excelの作業で困っています。

    エクセルで、データをコード管理しているのですが、下記(山田太郎と田中花子)のように、同じ人でコード(C1)を2つ所有している場合があるので、重複しているのデータを探し出し、そのデータを削除する作業をしているのですが、5000件以上のデータがあるものですから、相当時間がかかってしまいます。何か関数とか使って処理する方法がないか教えてください。ちなみに今は、データの並び替えをして1件ずつ削除しています。     C1    C2       C3 R1  100  山田 太郎  ヤマダ タロウ R2  200  田中 花子  タナカ ハナコ R3  105  山田 太郎  ヤマダ タロウ R4  300  鈴木 次郎  スズキ ジロウ R5  250  田中 花子  タナカ ハナコ  

  • エクセルで男女別の数を数えたい

    エクセル超初心者です。すみませんが教えてください。 以下のようなデータで、男○人、女○人を出したいのですが、どのようにすればよいのですか? A列     B列 アベ タロウ 男 アベ タロウ   男 イケダ ジロウ  男 イケダ ハナコ   女 イケダ ハナコ   女 ウノ サブロウ   男 ウノ サブロウ   男 6,815行あり、男女とも、重複して入っているのですが、重複していても1人として数えたいです。 よろしくお願いします。

  • 新生銀行のウェブ振込みについて質問です。

    新生銀行のウェブ振込は、 「振込み人の名前」を「口座の名義」と違う名前で 振り込めるでしょうか。 つまり、 ヤマダタロウさんが ヤマダタロウさん名義の口座を使って 奥さんであるヤマダハナコさんの代わりに 「ヤマダハナコ」名で、通販の支払いをし、 かつ、 相手に「ヤマダタロウ」名義の口座を使ったんだ、 ということが知られない、 ように振り込めるでしょうか、という質問です。 お詳しい方教えてください。 お願いします。

  • エクセルについて。

    エクセル2000を使っていて、顧客情報のリストをエクセルで管理しています。A列に名字、B列に名前を入れていますが、A列に名字と名前を一緒にしたいのですが今のデーターから編集出来ますでしょうか?編集の際には名字と名前の間にハイフンを入れたいと思っています。 (例)A列 ヤマダ  B列 タロウをA列にヤマダ-タロウとなるようにしたいのですが?出来そうであればアドバイスお願いいたします。

  • エクセルの名簿を名前順に並べ替えたい

    エクセルの名簿を名前順に並べ替えたいです。 Aのセルによみがな、Bのセルに漢字の名前が入っています。 例えば、 サカイ オサム   境 治 サカイ ジロウ   坂井 次郎 サカイ タカシ   酒井 隆史 サカイ タロウ   境 太郎 サカイ ハナコ   坂井 花子 サカイ ヨシコ   酒井 良子 とある場合、Aのセルで並べ替えるとBのセルの名字が揃いません。 これをよみがなでそろえ、さらに漢字でも並べ替えることはできるでしょうか。

  • エクセル・1つのセルに入った漢字(カナ)の分け方

    エクセルにお強い方、教えてください>< A1のセルに、 山田 花子(ヤマダ ハナコ) とあるとします。 私は B1のセルに 山田 花子 C1のセルに (ヤマダ ハナコ) と、分けてデータ化させたいのですが、 どのようにマクロを組めばよいでしょうか? また、分け終わったC1の(ヤマダ ハナコ)に 置換を使って( )をとって、 カナ を かな に直すため、 PHONETICと書式のふりがな機能を使って直しても データにエラーは起きずに処理できるでしょうか? 最終的なデータとして A1セル→山田 花子(やまだ はなこ) B1セル→山田 花子 C1セル→やまだ はなこ としたいのです。 ご存知の方いらっしゃいましたら、教えてください。 宜しくお願い致します。

  • エクセル→CSVにした時、スペースの数が違う

    あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。 変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。 行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。 メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。 具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、 多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)、カンマで区切った後に通し番号が入ります。 しかし、一部の人にはスペースがはいらずに、名前にカンマと通し番号が続いて表示されます。 <メモ帳で作成したCSVファイルを開いた時の例> ヤマダ○タロウ○○○○○○○○○○○○○,1,… スズキ○ハナコ○○○○○○○○○○○○○,2,… タカハシ○イチロウ○○○○○○○○○○○,3,… タナカ○アイ○○○○○○○○○○○○○○,4,… キムラ○ジロウ,5,… サトウ○シヨウコ○○○○○○○○○○○○,6,… ※○はスペース この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか? 使うソフトの仕様通りにCSVを作成しているのに、ソフトにデータをうまく取り込めないので、こういったところに問題があるのかと考えています。 ご回答よろしくお願いします。

  • エクセルで同じ番号の合計を計算する方法

    それぞれの列に、 A:ID B:名前 C:勤務月 D:出勤日 E:勤務時間 F:時給 G:日当 のデータが入っています。 例を挙げると下記の通りになります。 ID,名前,勤務月,出勤日,勤務時間,時給,日当 0001,タロウ,1月,4日,4.5,800,3600 0001,タロウ,1月,5日,3,800,2400 0001,タロウ,3月,15日,7,1000,7000 0003,ハナコ,3月,15日,7,1000,7000 0003,ハナコ,10月,1日,5.5,900,4950 0004,ジロウ,3月,15日,7,1000,7000 0004,ジロウ,3月,16日,6,1000,6000 0004,ジロウ,3月,17日,6,1000,6000 0004,ジロウ,8月,1日,2.5,800,2000 このデータが8000行で1000人分程度あり、一人ひとりの月毎の給与を計算して欲しいと依頼をされました。 手計算では時間がかかりすぎるので、IDと勤務月と日当を使ってどうにかして計算したいのですが、関数orマクロ等を使った何か良い方法はありませんか? よろしくお願いします。