• ベストアンサー

セルを複数選択して移動させたい (Excel2003)

いつもお世話になってます。 エクセルの初歩的な操作方法かもしれませんが教えてください。 いま、電話料金の請求業務をしています。 キャリア(電話会社)からは「4m 10s」のようにでてきますが、 こちらでは分課金なので4m 10s → 5分 または、45s→1分 のように処理します。 そこで、下のような例で困っています。 4m 10s → 5 56s   →1 1m 3s →2 8m 59s →9 「(セルの)区切り位置」を利用すると・・・ A   B 4m  10s 56s  (空欄) 1m  3s 8m  59s ここからB列は何秒であろうが、繰り上げなので1分と判断します。 そしてA列のm(分)と足せば解決なんですが、 A列は「m」と「s」が混在してしまっています。 このような行が5000行近くあるのでひとつひとつ「s」を選択することが実質無理なんです。 A列でオートフィルタ機能を使い、「sを含むセル」を選択して 切り取り→B列に貼り付け をしてもなぜかうまくいきません・・・。 どうすればいいんでしょうか? どうかアドバイスお願いします。

  • key-ko
  • お礼率87% (298/341)

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

区切りで分けていないデータからmを抜き出し、sがあれば、+1する =IF(ISERR(FIND("m",A1)),0,VALUE(LEFT(A1,FIND("m",A1)-1)))+IF(ISERR(FIND("s",A1)),0,1) 参考 m =IF(ISERR(FIND("m",A1)),0,VALUE(LEFT(A1,FIND("m",A1)-1))) s =IF(ISERR(FIND("m",A1)),VALUE(LEFT(A1,FIND("s",A1)-1)),VALUE(MID(A1,FIND("m",A1)+1,FIND("s",A1)-FIND("m",A1)-1)))

key-ko
質問者

お礼

No.1の方に教わったright関数でピックアップし No.3の方の手順で変換することでうまくできましたが、 この関数だと一発ですね(笑 中身がまだ完璧に理解できていませんが こういった複合の関数も使い慣れていきたいと思います。 どうもありがとうございました。

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#2 です。 十分検証してないしので、ご参考までにですすが。 マクロによる方法です。 A 列に以下の文字列があるとします。 4m 10s 56S 1m 3s 8m 59s このデータの範囲をマウスでセル選択し、下記マクロを実行すると 次のような結果が得られます。 4m 10s  00:04:10  00:05:00 56s    00:00:56  00:01:00 1m 3s   00:01:03  00:02:00 8m 59s  00:08:59  00:09:00 文字列をシリアル値に変換しているだけですが、分課金用に丸めた 時間も同時に計算しています。 Sub Sample()   Dim rngC As Range   Dim strDat As String   Dim datVal As Date   For Each rngC In Selection     If Not IsEmpty(rngC.Value) Then       '余計なSPと全半角の混在による事故防止       strDat = StrConv(CStr(Trim$(rngC.Value)), vbNarrow)       '大文字・小文字を区別しないので、TextCompareモードで       '「m」があるか判定       If Not InStr(1, rngC, "m", vbTextCompare) > 0 Then         '「m」があれば半角SPを補う         strDat = " " & strDat       End If       '半角SPで要素に区切る       Buf = Split(strDat, " ")       'シリアル値に変換       datVal = TimeSerial(0, Val(Buf(0)), Val(Buf(1)))       '一つ横のセルにそのものの時間を転記       With rngC.Offset(0, 1)         .NumberFormatLocal = "hh:mm:ss"         .Value = datVal       End With       '二つ横のセルに丸めた時間を転記       With rngC.Offset(0, 2)         .NumberFormatLocal = "hh:mm:ss"         .Value = Application.WorksheetFunction _               .Ceiling(datVal, 1 / 24 / 60)       End With     End If   Next rngC End Sub

key-ko
質問者

お礼

マクロまだ理解できず実践できませんでした。 覚えたら戻ってきてやってみたいと思います。 ありがとうございました。

  • Buchikun
  • ベストアンサー率36% (161/443)
回答No.3

オートフィルタでsだけ抜け出せたなら、それを全部1に書き換えてしまうのはどうでしょうか? フィルタのかかった状態で、セル右下のドラッグ機能で一気に1に書き換えできますよ。 もとのデータを残す必要があるなら、どこかにデータを移さないとまずいですけどね。

key-ko
質問者

お礼

単純ですけどオートフィルタで「~を含む」で簡単にできますね。 実践してみたらうまくできました。ありがとうございます。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 [区切り位置]を実行する前に、 =IF(ISERROR(FIND("m",A1,1))," " & A1,A1) みたいにして、Find関数で「m」が含まれるかチェックして、含まれ なければ、半角SPを補う。その後、値に変換して、[区切り位置]実行。 でどうですか?

key-ko
質問者

お礼

オートフィルタのオプション抽出でうまくできなかったことが この関数でできました。ありがとうございます。

  • tarame
  • ベストアンサー率33% (67/198)
回答No.1

C列に連番を入れておく D列に =right(A1,1) と入力(↓にコピー) D列をキーにして、ソート(並べ替え) D列が「s」のものを移動 C列をキーにして、ソート C列、D列を削除 こんな原始的な方法でいかがでしょうか?

key-ko
質問者

お礼

>回答をくれた皆様へ こんなにたくさんの回答ありがとうございます! まだ仕事がたくさん残っているので実践して ポイント振りたいと思います。スミマセン・・・

key-ko
質問者

補足

補足、ではありませんが rightの関数の使い方を覚えました。 簡単で今後に応用できそうです。ありがとうございました。

関連するQ&A

  • 複数選択したセルを含む行をまとめてコピー

    VBA初心者です。EXCEL2003を使用しています。 ◆やりたい事  ユーザーにセルを指定させ、そのセルを含む行をまとめてコピーして新規のブックに貼り付けたい。 ◆条件  ・ユーザーが指定できるセルはB列だけにしたい。   (B列以外を選択したらメッセージを表示して再選択させる)  ・ユーザーが指定できるセルは(連続・不連続問わず)最大8個までにしたい。   (未選択 or 8個以上ならメッセージを表示して再選択させる)   ◆完成イメージ  ・ユーザーがセル(ex.B4,B6:B8,B20(=計5行))を選択  ・マクロ実行(コマンドボタンを押す)  ・新規ブックのsheet1.range("A1")に貼り付け(=A1:A5に 貼り付く) こんな感じなんですが、なにとぞ御教授願います。

  • Excel2007 セルの移動

    セルに数値を入力しています。 A1 B1 A2 B2 と2行2列のセルに数字を拾い入力します。 セル移動は右と指定してあります。 B1入力後A2へ移動する際方向キーやマウスを使わず 左下移動するショートカットキーはないでしょうか? マクロも記録程度ならできますので ご教授いただきたいです。

  • エクセルの空白セルの選択

    こんにちは いつもお世話になっています。  エクセルの空白セルの選択について教えてください。 A列、B列にデータがあります。それぞれの列で空白セルがありますが、同じ行で両列ともに空白のセルだけを選択する方法を教えてください。  単に「ジャンプ」から空白セルを選択すると片方にデータがある行のセルも選択してしまいます。片方にデータのある行は残し、両列ともに空白の行を削除したのです。  よろしくお願いします。

  • 【Excel】複数セル参照して別のセルに下から表示

    セルの内容を他のシートのセルに表示させたいのですが、ただ表示させるのではなく、複数行複数列(仮にA1、B1~A10、B10とします)を、他のシートの大きめのセル(サイズ変更して10行分が入るようにしてある)に、逆に表示(A10、B10が一番上にA1、B1が一番下に来るように)し、かつ、1行ずつ改行(段落)させたいのです。 できますでしょうか? よろしくお願いします。

  • 一気にセルの結合できますか?

    お世話になります。 エクセル2000を使用しています。 例えば、A列は空欄でB列に文字が入っているとします。(10行目まで) 今、A列とB列を結合してB列に入っていた文字を一つのセルにしたいのですが、 1行目から10行目まで10回やらなければなりませんか? 一気に1行目から10行目までをそれぞれの行でセルの結合はできますか? よろしくお願いします。

  • エクセル セルの複数削除がしたい。

    使用しているオフィスは、WORD2003になります。 例えばセルの 1行目のB列~G列まで 2行目のB列~G列まで のそれぞれのセルに文字が入っているとします。 1行目の文字を一括で消したい場合、 1行目のB列~G列までのセルをマウスで選択して、 バックスペースやデリートキー(以下:削除キー)を押せば、 通常一行目のB列~G列に入っている文字は、通常全て削除されると思います。 所が、設定を変更した覚えはないのですが、 セルをB列~G列まで選択して削除キーを押した時、 選択されている状態のまま、文字は削除されず、B列のみが直接入力?する形になってしまいます。 多分、オプション設定等で調整する事が出来るものだと思っているのですが、それらしき項目がなくて解らない状態です。 ※行ごと削除したり他にもやり方はあると思いますが、セルを複数選択して、その選択したセルに入力してある文字を、削除したいのです。 上手く伝わっているでしょうか・・・ ご存じの方がいれば教えて頂けないでしょうか。 よろしくお願いします。

  • EXCEL VBA 複数セルの移動 

    かなり困っています。 どなたかヒントだけでもご教示お願いいたいます。 A列に大項目 B列に中項目 というリストがあります。 A.1に大項目があると、次の大項目が10行ぐらい下に入ります。(決まっていはいません。) 次の大項目がA.10とすると、中項目はB.1からB.8と、次の大項目が始まる一つ上のセルが、 最終行の中項目のセルとなります。 目的は大項目と同じ行に中項目があるので、これを1行下にずらしたいと思います。 中項目は次の大項目まで連続しているわけではなく、歯抜けのものが結構あります。 これが50万行もありマクロを使用しないと、何週間たっても終わりそうにありません。 どなたか、何卒ヒントだけでもお願いいたします。

  • Excel2002の選択したセルとそのセルの行列番号の関係

    XLを起動して初めに出る作業画面のタイトルバーは「book1」で、セルはA列、1行に自動選択されています。 ある参考書によれば、正常であればA列、1行のそれぞれの番号に色が付くはずとあります。 参考として載っているイラストでも行、列番号に色が付いています。 従って、例えばG8のセルを選択すると「G列、8行のそれぞれの番号に色がつく」 ということです。 然し、私の場合そうした明瞭な着色はありません。 よくよく見ると,微細線が付いています。 XL2000を使っているある人が言うには、 XL2000は付かないそうです。2002も2000同様につかないんでないか、参考書の誤りでないかといいます。 XL2002の場合も色は番号枠内に付かないんでしょうか。

  • セルをクリックで選択。違うセルへ価をコピーしたいです。

    お知恵をお貸しください。 エクセルでA列のセルを1つ選択して、その価を違うセル(例えばE12)に自動でコピーさせたいのですが良い方法がわかりません。マクロも試してみたのですが、A列のみの選択がうまくいかず動きませんでした。(A列は番号の入力域で、空欄が下へ続きます。) 単純なことの質問で申し訳ありませんが、よろしくお願いいたします。

  • 複数セルをまとめて移動させるマクロ

    こんにちは。どうぞよろしくお願いいたします。 Excel2003で、1行に3セルで構成されるデータが3データ記述してあるのを、 1行に1データ分として2データ目以降を次の行に移動させ、9列→3列に変更するマクロを作成したいと考えています。 【現在のデータ】   A    B    C    D    E    F    G    H    I 1 氏名1 住所1 電話1 氏名2 住所2 電話2 氏名3 住所3 電話3 2 氏名4 住所4 電話4 氏名5 住所5 電話5 氏名6 住所6 電話6 : 【計算結果】   A    B    C 1 氏名1 住所1 電話1  2 氏名2 住所2 電話2  3 氏名3 住所3 電話3 4 氏名4 住所4 電話4  5 氏名5 住所5 電話5  6 氏名6 住所6 電話6 :      この操作を繰り返すマクロを作成したいと思っています。 マクロは初心者ですので、繰り返して実行するロジックがよくわかりません。 すみませんが、どうぞご指導よろしくお願いいたします。

専門家に質問してみよう